동일한 세션에서 두 개의 백그라운드 작업이 시작된 경우 어떻게 다른 작업이 완료되었는지 결정할 수 있습니까? 처음에 나는이 같은 시도 : $j2
만 $j1
의 직렬화 된 스냅 샷 (스냅 샷 절대 변하지 않을 것의 작업 상태)를 얻을 수 있기 때문에 물론PowerShell 백그라운드 작업 동기화
$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
의 컨텍스트에서 $j
개체가 가짜 것으로 나타납니다.
작업은 뮤텍스, 파일 시스템 (동일한 컴퓨터에있는 경우) 또는 DB 등을 통해 동기화 할 수 있지만 powershell이 원격 액세스가 가능한 모든 기능을 제공하는지 궁금합니다.
파일을 사용하면 OK입니다 그래 (I 사용 어쨌든 파일 시스템에 의해 백업됩니다 생각 글로벌 뮤텍스)만큼 모두가 동일한 시스템에있어로하는 'Start-Job' (vs'Invoke-Command')이 주어 졌다고 가정하는 것이 안전합니다. – Serguei