You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多台设备批量查询NetAdapter信息的PowerShell脚本实现方法

脚本问题与优化方案

原脚本核心问题

原脚本完全不能实现跨设备批量查询需求,存在以下缺陷:

  • 循环内调用Get-NetAdapter时未指定远程设备参数,所有查询都在你执行脚本的本地设备上运行,不会访问任何域内目标设备。
  • 从AD查询到的$Machine是包含Name属性的对象,没有展开为纯字符串,后续调用远程参数时容易出现类型匹配错误。
  • 没有做连通性检测和异常捕获,遇到设备离线、权限不足、远程服务未开的场景会直接抛出报错中断执行,也没有错误记录。
  • 注释明确要求查询Wi-Fi适配器,但脚本没有对网卡类型做过滤,会返回目标设备所有网卡信息。
  • 查询结果没有关联对应设备名称,输出后无法区分每条网卡信息属于哪台设备。

优化调整方案

优化后完整脚本

# 从AD获取指定OU下所有设备名称,展开为字符串数组
$Machines = Get-ADComputer -Filter * -SearchBase 'OU=Laptops,OU=Win10Modern,OU=LN,OU=Workstations,DC=cooley,DC=com' | Select-Object -ExpandProperty Name

# 批量查询远程设备网卡信息
$adapterResults = ForEach ($Machine in $Machines) {
    # 先测试设备连通性,避免长时间无响应
    if (Test-Connection -ComputerName $Machine -Count 1 -Quiet -ErrorAction SilentlyContinue) {
        try {
            # 远程查询,过滤Wi-Fi适配器,追加设备名称字段,不需要过滤可删除-Name参数
            Get-NetAdapter -ComputerName $Machine -Name "*Wi-Fi*","*无线*" -ErrorAction Stop | 
            Select-Object @{Name='设备名称';Expression={$Machine}},Name,InterfaceDescription,DriverVersion,DriverDate,DriverProvider
        }
        catch {
            # 捕获查询异常返回错误信息
            [PSCustomObject]@{
                设备名称 = $Machine
                Name = "查询失败"
                InterfaceDescription = $_.Exception.Message
                DriverVersion = $null
                DriverDate = $null
                DriverProvider = $null
            }
        }
    }
    else {
        # 返回离线标记
        [PSCustomObject]@{
            设备名称 = $Machine
            Name = "设备离线"
            InterfaceDescription = "无法ping通目标设备"
            DriverVersion = $null
            DriverDate = $null
            DriverProvider = $null
        }
    }
}

# 控制台输出结果,可取消注释导出为CSV文件
$adapterResults | Format-Table -AutoSize
# $adapterResults | Export-Csv -Path "C:\域内设备网卡信息.csv" -NoTypeInformation -Encoding UTF8

额外使用说明

  • 运行脚本的账号需要拥有目标远程设备的管理员权限,且远程设备需要开启WinRM/WMI远程访问权限,域环境可通过组策略批量配置。
  • 如果需要查询的设备数量较多,可改用Invoke-Command并行执行查询,效率更高,参考写法:
# 并行远程执行,适合10台以上设备批量查询
$adapterResults = Invoke-Command -ComputerName $Machines -ScriptBlock {
    Get-NetAdapter -Name "*Wi-Fi*","*无线*" | Select-Object Name,InterfaceDescription,DriverVersion,DriverDate,DriverProvider
} -ErrorAction SilentlyContinue | Select-Object @{Name='设备名称';Expression={$_.PSComputerName}},* -ExcludeProperty PSComputerName,RunspaceId

内容的提问来源于stack exchange,提问作者Khalifa96

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 15:30:00