実行したジョブの状態確認と実行結果の取得
Start-Jobコマンドレットで実行したジョブはバックグラウンドで動作するため、後から実行結果を取得する必要があります。
実行状態の確認
まずはバックグラウンドで実行したジョブの実行状態を確認する方法ですが、これにはGet-Jobコマンドレットを使用します。
Get-Jobコマンドレットの基本構文は次のいずれかです。この他にもありますので興味がある方はヘルプを参照ください。
Get-Job -Id ジョブID または Get-Job -Name ジョブ名
基本は、実行したジョブのIdまたはジョブ名を渡します。パラメータを使用しないでGet-Jobコマンドレットを実行した場合は、すべてのジョブがリスト表示されます。
ジョブの実行が完了している場合は図2のようにStateが「Completed」となります。もしもジョブが失敗した場合には「Failed」となります。
実行結果の取得
バックグラウンドで実行したジョブの結果を取得するには、Receive-Jobコマンドレットを使用します。
Receive-Jobコマンドレットの基本構文は次のとおりです。
Receive-Job -Id ジョブID または Receive-Job -Name ジョブ名
パラメータに指定するジョブIDやジョブ名は、先ほど紹介したGet-Jobコマンドレットで確認することができます。次に示すリスト2はジョブIDが1の結果を取得して、$Jobresultという変数に格納します(図3)。
$JobResult = Receive-Job -Id 1
ジョブ結果取得時の注意点
バックグラウンドジョブの実行結果はキャッシュに保存されています。
Receive-Jobコマンドレットは、既定ではジョブの結果をキャッシュから削除します。
ジョブの実行が完了している場合には、すべての実行結果を取り出しますが、実行途中のジョブに対してReceive-Jobコマンドレットを実行すると、途中までの結果を返してその分の結果をキャッシュから削除します。
もう1度Receive-Jobコマンドレットを実行すると、残りの結果を返します。
もしも、実行結果をキャッシュから削除したくない場合にはkeepパラメータを使用します。例えばリスト3は、ジョブ結果をキャッシュから取得しますが、キャッシュの中身は削除されません。
$Jobresult =Receive-Job -Id 1 -Keep