2 つのバックグラウンド ジョブが同じセッションから開始された場合、一方がもう一方が終了したことをどのように判断できますか? 最初に、次のようなことを試しました。
$j1 = Start-Job {
Start-Sleep -Seconds 5
"j1 done"
}
$j2 = Start-Job {
param($j)
"j2 waiting..."
$j | Wait-Job
"j2 done"
} -ArgumentList $j1.Finished
$j1,$j2 | Receive-Job -Wait
もちろん$j2
、シリアル化されたスナップショットしか取得しないため、機能しません$j1
(スナップショットのジョブステータスは決して変更されません)。さらに、各バックグラウンド ジョブには独自のジョブ リポジトリがあるため、$j
オブジェクトは のコンテキストでは偽物に見えます$j2
。
ジョブは、ミューテックス、ファイルシステム (同じマシン上にある場合)、または DB などを介して同期できますが、powershell がこれに対してリモート処理に適した機能を提供するかどうか疑問に思っています。