在PowerShell中等待所有子进程完成

时间:2011-02-14 09:19:35

标签: powershell process wait

我想同时在PowerShell中执行多个外部脚本,然后等待所有脚本完成再继续。目前我正在使用'start-process -NoNewWindow ...'命令行开关,它循环遍历所有子进程,但随后终止。

我找到了许多等待1个进程完成的方法(这显然是微不足道的)但是它们似乎都不能解决我的问题。

在PowerShell中拥有UNIX version的等价物肯定是我要找的。

2 个答案:

答案 0 :(得分:30)

并且不要忘记可能是为多个进程执行此操作的最直接的方法 - Wait-Process例如:

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

答案 1 :(得分:6)

您是否检查过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