我是这些令人敬畏的Power shell世界的新手。我的脚本有问题,并且真的很了解你的帮助。
我有一个脚本“cmd4.ps1”需要运行另一个需要接收3个字符串参数的脚本“Transfer.ps1”,它需要像其他进程一样运行,并且与“cmd4.ps1”不同。
cmd4.ps1:
$Script="-File """+$LocalDir+"\Remote\Transfer.ps1"" http://"+$ServerIP+"/Upload/"+$FileName+" "+$ServerIP+" "+$LocalIP Start-Process powershell.exe -ArgumentList $Script
在执行后,$Script
会产生类似于
-File "c:\temp re\Remote\Transfer.ps1" http://10.1.1.1/Upload/file.txt 10.1.1.1 10.1.1.10
包含使用-File
参数运行Powershell.exe脚本的语法,以及Transfer.ps1需要的三个参数("http://10.1.1.1/Upload/file.txt", 10.1.1.1, 10.1.1.10
)。
当我在PowerShell ISE中编写这些指令时,我可以看到每个值都正确并且PowerShell.exe以正确的值执行,一切正常!但是如果我将这些指令放在“cmd4.ps1”脚本中它不会工作,我的意思是有些东西与参数不对,因为我可以看到它启动PowerShell但它永远不会结束。
答案 0 :(得分:1)
-ArgumentList
期待一个字符串参数数组而不是单个字符串。试试这个:
$ScriptArgs = @(
'-File'
"$LocalDir\Remote\Transfer.ps1"
"http://$ServerIP/Upload/$FileName $ServerIP $LocalIP"
)
Start-Process powershell.exe -ArgumentList $ScriptArgs
请注意,您可以简化args的字符串构造,如上所示。
答案 1 :(得分:0)
为什么不把它放在cmd4.ps1中?
& "c:\temp re\Remote\Transfer.ps1" "http://10.1.1.1/Upload/file.txt" "10.1.1.1" "10.1.1.10"