爲列表中的每個服務器運行作業。我只想要一次運行5個作業。作業完成後,應該在列表中的下一臺服務器上開始一項新工作。這裏是我到目前爲止,但我不能讓它開始新工作後的第一晚五組的工作已經跑:PowerShell作業隊列
$MaxJobs = 5
$list = Get-Content ".\list.csv"
$Queue = New-Object System.Collections.Queue
$CurrentJobQueue = Get-Job -State Running
$JobQueueCount = $CurrentJobQueue.count
ForEach($Item in $list)
{
Write-Host "Adding $Item to queue"
$Queue.Enqueue($Item)
}
Function Global:Remote-Install
{
$Server = $queue.Dequeue()
$j = Start-Job -Name $Server -ScriptBlock{
If($JobQueueCount -gt 0)
{
Test-Connection $Server -Count 15
}##EndIf
}##EndScriptBlock
}
For($i = 0 ;$i -lt $MaxJobs; $i++)
{
Remote-Install
}
這就是我最終做的......我認爲這是爲我工作的.. $ list = Get-Content「。\ list.csv」 $ queue = [System.Collections.Queue] ::同步((新物體System.Collections.Queue)) 的ForEach($在$列表項) { 寫主機 「添加$項目排隊」 $ Queue.Enqueue($項目) } $ Server = $ queue.Dequeue() foreach($ server in $ list){ $ running = Get-Job |位置對象{$ _ JobStateInfo.State -eq '跑步'。} 如果($ running.Count -le 2) { ..腳本這裏.. } 其他 {$ 運行| Wait-Job } } –