Если два фоновых задания запускаются из одного и того же сеанса, как одно из них может определить, что другое завершено? Сначала я пробовал что-то вроде этого:
$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
.
Задания могут синхронизироваться через мьютексы, файловую систему (если на одном компьютере) или БД и т. д., но мне интересно, предоставляет ли powershell какие-либо средства для удаленного взаимодействия для этого?