web-dev-qa-db-ja.com

すべての子プロセスが終了するのをPowerShellで待機しています

PowerShellで複数の外部スクリプトを同時に実行し、すべてが完了するのを待ってから続行したいと思います。現在、すべての子プロセスをループして終了する「start-process -NoNewWindow ...」コマンドレットを使用しています。

1つのプロセスが終了するのを待つ方法はたくさんありますが(これは明らかに些細なことです)、どれも私の問題の解決策として機能していないようです。

PowerShellで NIXバージョン に相当するものがあることは間違いなく私が探しているものです。

18
jaccus

そして、複数のプロセスに対してこれを行うためのおそらく最も簡単な方法を忘れないでください-Wait-Process例:

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

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
7
ravikanth