从powershell脚本执行powershell.exe(在ISE中运行,但不在脚本中运行)

从powershell脚本执行powershell.exe(在ISE中运行,但不在脚本中运行),powershell,powershell-1.0,Powershell,Powershell 1.0,我是新来的这些可怕的权力壳世界。我对脚本有问题,非常感谢你的帮助 我有一个脚本“cmd4.ps1”,它需要运行另一个脚本“Transfer.ps1”,该脚本需要接收3个字符串参数,并且需要作为与“cmd4.ps1”不同的其他进程运行 cmd4.ps1: $Script="-File """+$LocalDir+"\Remote\Transfer.ps1"" http://"+$ServerIP+"/Upload/"+$FileName+" "+$ServerIP+" "+$LocalIP St

我是新来的这些可怕的权力壳世界。我对脚本有问题,非常感谢你的帮助

我有一个脚本“cmd4.ps1”,它需要运行另一个脚本“Transfer.ps1”,该脚本需要接收3个字符串参数,并且需要作为与“cmd4.ps1”不同的其他进程运行

cmd4.ps1:

$Script="-File """+$LocalDir+"\Remote\Transfer.ps1"" http://"+$ServerIP+"/Upload/"+$FileName+" "+$ServerIP+" "+$LocalIP Start-Process powershell.exe -ArgumentList $Script 包含使用
-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,但它永远不会结束。

-ArgumentList
需要一个字符串参数数组,而不是单个字符串。请尝试以下方法:

$ScriptArgs = @(
    '-File'
    "$LocalDir\Remote\Transfer.ps1"
    "http://$ServerIP/Upload/$FileName $ServerIP $LocalIP"
)

Start-Process powershell.exe -ArgumentList $ScriptArgs

请注意,您可以如上所示简化参数的字符串构造。

为什么不将其放在cmd4.ps1中

& "c:\temp re\Remote\Transfer.ps1" "http://10.1.1.1/Upload/file.txt" "10.1.1.1" "10.1.1.10"
& "c:\temp re\Remote\Transfer.ps1" "http://10.1.1.1/Upload/file.txt" "10.1.1.1" "10.1.1.10"