2011-02-14 93 views
18

我想在PowerShell中同時執行多個外部腳本,然後等待所有這些腳本完成後再繼續。目前我正在使用'start-process -NoNewWindow ...'commandlet,它循環遍歷所有的子進程但終止。在PowerShell中等待所有子進程完成

我發現有很多方法可以等待1個過程完成(這顯然是微不足道的),但它們都不能解決我的問題。

在PowerShell中有UNIX version的等價物肯定會是我正在尋找的。

+0

的Unix給您的Powershell的遠尤爲明顯可能性:Python和bash中,Perl的。想想更簡單! – 2015-11-25 14:01:08

+0

你說你解決了你的工作問題?你願意分享這個解決方案嗎? – lit 2016-09-27 21:53:49

+0

現在您可以在UNIX上運行PowerShell。 https://github.com/PowerShell/PowerShell – lit 2016-09-27 21:54:10

回答

29

而且不要忘了可能是最直接的方式爲多張過程做到這一點 - Wait-Process例如爲:

$procs = $(Start-Process Notepad.exe -PassThru; Start-Process Calc.exe -PassThru) 
$procs | Wait-Process 
5

您是否檢查PowerShell v2中的後臺作業功能?

$job = Start-Job -Name "Proc1" -ScriptBlock { Sleep 10000 } 
Wait-Job -Job $job 

另外,Start-Process有一個叫做-wait的參數。指定時,Start-Process將等待孩子退出。

Start-Process -FilePath calc.exe -Wait