我发现的所有内容都使用预定义的睡眠时间来限制工作.
我需要油门等到工作完成后再开始新工作.
一次只能运行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您可以测试以下内容:
$servers = Get-Content "C:\temp\flashfilestore\serverlist.txt" $scriptBlock = { #DO STUFF } invoke-command -computerName $servers -scriptblock $scriptBlock -jobname 'YourJobSpecificName' -throttlelimit 4 -AsJob
此命令使用Invoke-Command cmdlet及其AsJob参数来启动在多台计算机上运行scriptblock的后台作业.由于该命令不能同时运行4次以上,因此该命令使用Invoke-Command的ThrottleLimit参数将并发命令数限制为4.
请注意该文件包含域中的计算机名称.
精彩评论