首页 > 解决方案 > Powershell get-adcomputer + get-wmi-object

问题描述

我正在设置一个 RADIUS 服务器,除了带有特定无线网卡的笔记本电脑外,一切正常。

我设法解决了这个问题,但我希望列出我所有加入了 AD 域且 NIC 有故障/过时的计算机(我们所有的笔记本电脑都在几个不同的 OU 中)。

我正在考虑结合GET-ADcomputer -filter *(列出所有计算机对象)并将其与get-wmiobject win32_networkadapter | select netconnectionid, name | where name -eq "Intel(R) Dual Band Wireless-AC 8265"

PS cmdlet 单独工作,但我想匹配由你帮我get-wmiobject触发的每个匹配项?get-adcomputerCan:)

标签: powershellactive-directory

解决方案


这就是您可以处理脚本的方式。我同意亚伯拉罕的评论,如果可以的话,请使用Get-CimInstance

Get-CimInstance win32_networkadapter | Where-Object Name -EQ $match
$computers = Get-ADComputer -Filter *
$match = 'Intel(R) Dual Band Wireless-AC 8265'

$result = foreach($computer in $computers)
{
    $wmi = Get-WmiObject win32_networkadapter | Where-Object Name -EQ $match

    if(-not $wmi){ continue }
    
    [pscustomobject]@{
        ComputerName = $computer.Name
        NetconnectionID = $wmi.NetConnectionID
        Name = $wmi.Name
    }
    
}

$result | Export-Csv 'path/to/csv.csv' -NoTypeInformation

编辑

我还没有测试过这个,我现在也没有办法测试它,但如果这个工作应该更快,使用查询语言:

$computers = (Get-ADComputer -Filter *).sAMAccountName
$match = 'Intel(R) Dual Band Wireless-AC 8265'
$filter = @{
    ComputerName = $computers
    Query = "SELECT NetConnectionID, Name FROM win32_networkadapter WHERE Name = '$match'"
}
Get-WmiObject @filter

推荐阅读