【发布时间】:2014-02-26 12:14:47
【问题描述】:
我发现的所有 tuts 都使用预定义的睡眠时间来限制工作。 我需要油门等到工作完成后再开始新的工作。 一次只能运行 4 个作业。
所以脚本将运行 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
【问题讨论】:
标签: multithreading powershell throttling