我正在尝试通过Get-ADComputer选择的多台计算机上调用Get-WMIObject(gwmi)作为后台作业。
我的第一次尝试是
$job = Get-ADComputer -filter "name -like '*t90*'" | % { gwmi -computername $_.name -query "select name,username from win32_computersystem" -asjob -throttlelimit 10 }
然而,由于我为每个返回的计算机对象调用了gwmi,因此创建了数百个后台作业,我不相信他们会集体注意ThrottleLimit。
我这样做了吗?
我知道gwmi也可以接受computername属性的数组,如下所示:
$job = gwmi -computername "computer1","computer2","computer3" -query "select * from win32_computersystem" -asjob -throttlelimit 10
这样做会导致单个作业而不是数百个作业,因为gwmi只被调用一次。这是我应该这样做的方式吗?如果是这样,如何将Get-ADComputer的输出作为数组提供给gwmi?
谢谢!
答案 0 :(得分:1)
首先获取所有计算机名称并将它们传递给computerName参数:
$cn = Get-ADComputer -filter "name -like '*t90*'" | select -expand name
$job = gwmi -computername $cn -query "select name,username from win32_computersystem" -asjob -throttlelimit 10