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

jac*_*cus 18 powershell process wait

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

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

在PowerShell中拥有UNIX版本的等价物肯定是我想要的.

Kei*_*ill 31

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

$procs = $(Start-Process Notepad.exe -PassThru; Start-Process Calc.exe -PassThru)
$procs | Wait-Process
Run Code Online (Sandbox Code Playgroud)

  • +1记住`-PassThru`参数,否则`$ procs`将为null! (4认同)
  • +1基思.我完全错过了等待过程.可能是因为我从来没用过它:) (2认同)

rav*_*nth 7

您是否检查了PowerShell v2中的后台作业功能?

$job = Start-Job -Name "Proc1" -ScriptBlock { Sleep 10000 }
Wait-Job -Job $job
Run Code Online (Sandbox Code Playgroud)

此外,Start-Process有一个名为-wait的参数.指定后,Start-Process将等待子进程退出.

Start-Process -FilePath calc.exe -Wait
Run Code Online (Sandbox Code Playgroud)