多线程 – Powershell Throttle通过作业完成多线程作业
发布时间:2020-12-15 04:42:10 所属栏目:Java 来源:网络整理
导读:我发现的所有内容都使用预定义的睡眠时间来限制工作. 我需要油门等到工作完成后再开始新工作. 一次只能运行4个作业. 因此脚本将运行4并且当前暂停10秒然后运行其余部分. 我想要的是脚本只允许一次运行4个作业,并且当作业完成时,新的作业将被启动. 通过服务器
我发现的所有内容都使用预定义的睡眠时间来限制工作.
我需要油门等到工作完成后再开始新工作. 一次只能运行4个作业. 因此脚本将运行4并且当前暂停10秒然后运行其余部分. 通过服务器名称列表初始化作业. 是否可以存档? $servers = Get-Content "C:tempflashfilestoreserverlist.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:tempflashfilestoreserverlist.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. 请注意该文件包含域中的计算机名称. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |