如何组合Get-ADComputer与Get-WmiObject查询域内指定网卡设备
PowerShell跨设备查询指定AD域网卡实现方案
核心实现脚本
你可以通过遍历Get-ADComputer返回的设备名,逐台发起远程WMI/CIM查询实现需求,推荐优先使用已替代Get-WmiObject的Get-CimInstance cmdlet,兼容性和错误处理能力更强,完整脚本如下:
# 导入AD模块 Import-Module ActiveDirectory # 定义要匹配的目标网卡名称 $targetNicName = "Intel(R) Dual Band Wireless-AC 8265" # 遍历所有AD计算机对象查询网卡 Get-ADComputer -Filter * | ForEach-Object { $computerName = $_.DNSHostName # 跳过空设备名 if (-not $computerName) { return } try { # 远程查询网卡信息,超时设置避免长时间等待离线设备 $nic = Get-CimInstance -ClassName Win32_NetworkAdapter -ComputerName $computerName -ErrorAction Stop | Where-Object Name -eq $targetNicName | Select-Object NetConnectionID, Name if ($nic) { # 匹配到目标网卡则输出结果 [PSCustomObject]@{ 计算机名 = $computerName 设备OU = $_.DistinguishedName -replace '^CN=.*?,','' 网卡名称 = $nic.Name 网络连接名 = $nic.NetConnectionID } } } catch { # 可根据需求开启离线/无权限设备的日志输出 # Write-Warning "无法连接到设备 $computerName : $_" } } | Export-Csv -Path "目标网卡设备清单.csv" -NoTypeInformation -Encoding UTF8
注意事项
- 执行脚本的账号需要具备所有目标设备的本地管理员权限,同时目标设备防火墙需开放WMI/CIM远程访问入站规则
- 如果你坚持要使用原有的
Get-WmiObject,只需把脚本中的Get-CimInstance替换为对应命令即可,逻辑完全一致 - 如果仅需要查询特定OU下的设备,可以给
Get-ADComputer添加-SearchBase "OU=笔记本,DC=你的域名,DC=com"参数缩小查询范围,提升执行效率
内容的提问来源于stack exchange,提问作者Niels Meulemans
相关产品推荐
相关产品推荐

