2010-11-03 120 views
2

我是新來的這些超棒的Power殼世界。我遇到了一個腳本問題,真的很讚賞你的幫助。從powershell腳本執行powershell.exe(在ISE中運行,但不是在腳本中)

我有一個腳本「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 

ejecution後,$Script cointain值類似於

 
-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」腳本中, t工作,我的意思是不正確的參數,因爲我可以看到它啓動PowerShell,但它永遠不會結束。

回答

1

-ArgumentList期望一個字符串參數數組而不是單個字符串。試試這個:

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

Start-Process powershell.exe -ArgumentList $ScriptArgs 

請注意,您可以簡化args的字符串構造,如上所示。

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" 
相關問題