每台计算机的节气门Powershell作业

时间:2018-07-31 12:23:45

标签: powershell jobs throttling

我们有一个脚本,每台计算机使用不同的参数进行调用。可能会在同一台计算机上多次调用同一脚本,但使用其他参数。

示例代码:

$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。但找不到干净的解决方案。

0 个答案:

没有答案