ジョブの待機と停止
処理に時間のかかるジョブはいつ終わるのか分かりません。そこで、ジョブの完了を待機するコマンドレットと、停止をするコマンドレットが備わっています。ここではジョブの待機と停止をする方法について説明します。
ジョブの待機
Wait-Jobコマンドレットを使用することで、バックグラウンドジョブの実行完了を待ってから、コマンドプロンプトを表示させることができます。
普通にコマンドレットを実行するのと同じように思われるかもしれませんが、このコマンドレットを使用すれば、他のジョブとの同期を取ったり、待機時間を指定してジョブの終了を待つといったことが可能になります。
ジョブ待機の基本構文は次のとおりです。
Wait-Job -ID ジョブID -Timeout 待機時間(秒)
-IDパラメータ、-Timeoutパラメータは省略可能です。省略した場合にはすべてのジョブの完了を待ってからコマンドプロンプトに戻ります。リスト4はジョブIDが1のジョブが完了するのを待機します。
Wait-Job -ID 1
また-ID、-Timeoutパラメータの他に、-Anyパラメータがあります。-Anyパラメータを使用すると、複数のバックグラウンドジョブのうち、いずれかのジョブが完了したときにコマンドプロンプトへ戻ることができます。
例えばリスト5はIDが1,3,5のいずれかのバックグランドジョブが完了した時点でコマンドプロンプトが表示されます。また終了してないジョブは引き続き実行されます。
Wait-Job -ID 1, 3, 5 -Any
ジョブの停止
バックグラウンドで実行中のジョブは、途中であっても停止させることが可能です。この場合はStop-Jobコマンドレットを使用します。
よく使用されると思われる構文2つを紹介します。まず1つは、ジョブIDを指定して停止させる構文です。
Stop-Job -ID 停止させるジョブID
リスト6はジョブIDが1のジョブを停止させます。
Stop-Job -ID 1
次に状態を指定してジョブを停止させる構文です。
Stop-Job -State 状態
「状態」というのは表1の通りでNotStarted、Running、Completed、Stopped、Failedなどがあります。
値 | 説明 |
---|---|
NotStarted | 開始されていない |
Running | 実行中 |
Completed | 完了した |
Stopped | 停止した |
Failed | 失敗した |
例えばリスト7は状態にRunningを指定しているので、実行中のすべてのジョブを停止します。
Stop-Job -State Running