【问题标题】:Calling Get-WMIObject on multiple computers selected via Get-ADComputer在通过 Get-ADComputer 选择的多台计算机上调用 Get-WMIObject
【发布时间】:2012-03-29 15:27:20
【问题描述】:

我正在尝试在通过 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 也可以接受一个数组作为计算机名属性,如下所示:

$job = gwmi -computername "computer1","computer2","computer3" -query "select * from win32_computersystem" -asjob -throttlelimit 10

这样做会导致单个作业而不是数百个作业,因为 gwmi 只被调用一次。这是我应该这样做的方式吗?如果是这样,如何将 Get-ADComputer 的输出作为数组提供给 gwmi?

谢谢!

【问题讨论】:

    标签: powershell


    【解决方案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 
    

    【讨论】:

    • 它只为您获取值,没有它您将获得具有 name 属性的对象
    • 相当于get-qadcomputer ... | foreach {$_.name}
    猜你喜欢
    • 2016-02-12
    • 2023-04-08
    • 2021-12-21
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    相关资源
    最近更新 更多