2011-09-06 62 views
2

你們中的任何人都可能知道爲什麼這不起作用嗎?通過startprocess執行scriptblock

Start-Process $PSHOME\powershell.exe -ArgumentList "-NoExit -Command & `"{$outvar1 = 4+4; `"out: $outvar1`"}`"" -Wait 

這樣做的最終目的是,我可以通過添加-Credential選項來運行腳本塊作爲另一個用戶。但我不能讓這個簡單的腳本塊工作。 非常感謝。 Chris。

+0

任何理由你不使用'調用命令'可以使用指定的憑據在本地或遠程運行腳本塊(請參閱[help](http://technet.microsoft.com/zh-cn/library/dd347578.aspx)中的示例2)? – Richard

+0

嗨,那麼事實是,即時執行AutoSPInstaller腳本時,在行2056 AutoSPInstallerFunctions.ps1有一個錯誤。我試圖複製它的功能,原來的路線是; \t \t Start-Process $ PSHOME \ powershell.exe -Credential $ FarmCredential -ArgumentList「-Command Start-Process $ PSHOME \ powershell.exe -ArgumentList'」'$ ScriptFile'' -Verb Runas「-Wait – chris

+0

其中script文件是前面生成的腳本的路徑和文件名稱 – chris

回答

2

這裏是工作的財產以後:

PS C:\> Start-Process $PSHOME\powershell.exe -ArgumentList "-NoExit","-Command `"&{`$outvar1 = 4+4; `"write-output `$outvar1`"}`"" -Wait 

-ArgumentList是strinds $ outvar的數組被解釋,所以我用`$ outvar

+0

太棒了,然後在我們剛剛轉義特殊字符之前添加一些文本,現在我明白了。歡呼開始進程$ PSHOME \ powershell.exe -ArgumentList「 - 無退出」,「 - 命令'」&{'$ outvar1 = 4 + 4; ''write-output'「Hello:''''$ outvar1'」}'「」-Wait – chris

+4

僅供參考,我更願意使用'$ p =開始 - 進程... -PassThru;等待進程$ p.id -Timeout xxx'。爲防止啓動的進程掛起,我的腳本將不會掛起超過指定的超時時間。 –