在通过Get-ADComputer选择的多台计算机上调用Get-WMIObject

时间:2012-03-29 15:27:21

标签: powershell

我正在尝试通过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?

谢谢!

1 个答案:

答案 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