我们有一个脚本,每台计算机使用不同的参数进行调用。可能会在同一台计算机上多次调用同一脚本,但使用其他参数。
示例代码:
$Jobs = @()
@(
[PSCustomObject]@{Name='a';ComputerName='Pc1'}
[PSCustomObject]@{Name='b';ComputerName='Pc1'}
[PSCustomObject]@{Name='c';ComputerName='Pc1'}
[PSCustomObject]@{Name='d';ComputerName='Pc2'}
[PSCustomObject]@{Name='e';ComputerName='Pc2'}
[PSCustomObject]@{Name='f';ComputerName='Pc3'}
).ForEach({
$Jobs += Invoke-Command -ScriptBlock {
Param ($Name)
"$Env:COMPUTERNAME $Name"
} -ComputerName $_.ComputerName -ArgumentList $_.Name -AsJob
})
我们想知道如何限制一台计算机同时运行的作业,而不会使远程计算机过载。
CmeLet Invoke-Command
公开了参数-ThrottleLimit
,但这仅限制了一次启动的作业总数。不是每台计算机运行的作业。
我们尝试使用code suggested by Microsoft。但找不到干净的解决方案。