Все найденные мною утилиты используют предварительно определенное время сна для работы дроссельной заслонки. Мне нужно, чтобы дроссель подождал, пока работа не будет завершена, прежде чем начинать новую. Только 4 задания могут выполняться одновременно.Powershell Throttle Многопоточные задания через выполнение задания
Таким образом, сценарий будет работать до 4 и в настоящее время останавливается на 10 секунд, а затем запускает остальные. Я хочу, чтобы сценарий позволял запускать только 4 задания за один раз, и по завершении задания начинается новый.
Работы инициализируются через список имен серверов.
Можно ли это сохранить?
$servers = Get-Content "C:\temp\flashfilestore\serverlist.txt"
$scriptBlock = { #DO STUFF }
$MaxThreads = 4
foreach($server in $servers) {
Start-Job -ScriptBlock $scriptBlock -argumentlist $server
While($(Get-Job -State 'Running').Count -ge $MaxThreads) {
sleep 10 #Need this to wait until a job is complete and kick off a new one.
}
}
Get-Job | Wait-Job | Receive-Job
Не плохая ссылка. Я предпочитаю также пробелы, так как они менее ресурсоемкими. – xXhRQ8sD2L7Z