基于如何并行執行多個 PowerShell 函式?,我能夠做到這一點,我停止所有正在運行的作業,并行。
# Run this in parallel
$stopService {
param($service)
Stop-Service -Name $service.name -Force
}
$services = Get-Services | Where-Oject {$_.name -like "*XYX_*"}
Foreach($service in Sservices) {
Start-Job -ScriptBlock $stopService -ArgumentList $service
}
$doSomethingElse
但是我怎樣才能修改代碼,以便我的所有并行作業在我之前完成$doSomethingElse呢?有點像join()命令?
uj5u.com熱心網友回復:
您可以在變數中捕獲PSRemotingJob回傳的所有實體,然后使用或使用Start-Job等待它們:Wait-JobReceive-Job -Wait -AutoRemove
$jobs = foreach($service in $services) {
Start-Job -ScriptBlock $stopService -ArgumentList $service
}
Receive-Job $jobs -Wait -AutoRemove
還有其他選擇,例如在這個答案中顯示的那個,使用回圈。例如:
while($jobs.State -contains 'Running') {
# do something here, track progress, etc
Start-Sleep 1
}
但是,對于手頭的情況,似乎不需要。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/439107.html
上一篇:從CSV串列中洗掉檔案夾
