목록의 각 서버에 대해 작업을 실행합니다. 한 번에 5 개의 작업 만 실행하고 싶습니다. 작업이 완료되면 목록의 다음 서버에서 새 작업이 시작됩니다. 여기에 지금까지 무엇을, 그러나 나는 처음 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 ($ list in $ server) { $ running = Get-Job | 어디-오브젝트 {$ _ JobStateInfo.State -eq '실행'.} ($ running.Count -le 2) 경우 { .. 스크립트 여기 .. } 다른 { 실행 $를 | 대기업 } } –