gpt4 book ai didi

multithreading - 通过作业完成的 Powershell Throttle 多线程作业

转载 作者:行者123 更新时间:2023-12-04 04:27:05 25 4
gpt4 key购买 nike

我发现的所有 tuts 都使用预定义的 sleep 时间来限制作业。
我需要 throttle 来等待一项工作完成,然后再开始一项新工作。
一次只能运行 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 参数启动后台作业,该作业在多台计算机上运行脚本块。由于该命令不能同时运行超过 4 次,因此该命令使用 Invoke-Command 的 ThrottleLimit 参数将并发命令的数量限制为 4。

请注意该文件包含域中的计算机名称。

关于multithreading - 通过作业完成的 Powershell Throttle 多线程作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21520094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com