powershell可一键获取所有网卡mac地址:一、用get-netadapter -includehidden导出全部(含禁用/虚拟网卡);二、通过interfacedescription匹配厂商名并过滤非法mac,精准提取真实物理网卡;三、支持远程批量导出;四、兼容旧系统可用wmi替代。
可以用 powershell 一键获取所有网卡的 mac 地址,包括物理网卡、虚拟网卡(如 hyper-v、vmware、docker 网卡)和已禁用但存在的适配器。
一、导出本机所有网卡的 MAC 地址(含隐藏/禁用网卡)
运行以下命令,会列出所有网络适配器(无论启用与否)及其 MAC 地址(PhysicalAddress 字段),并导出为 CSV 文件:
Get-NetAdapter | Select-Object Name, InterfaceDescription, Status, MacAddress, ifIndex | Export-Csv -Path "$env:USERPROFILEDesktopNIC_MAC_List.csv" -NoTypeInformation -Encoding UTF8
说明:
-
Get-NetAdapter 默认只返回“已安装且启用”的适配器;若要包含已禁用的,加参数
-IncludeHidden - 完整导出所有(含禁用+隐藏)可用:
Get-NetAdapter -IncludeHidden | Select-Object Name, InterfaceDescription, Status, MacAddress, ifIndex | Export-Csv ... - MAC 地址为空(
MacAddress :)表示该适配器无物理 MAC(如某些隧道接口、软件网桥)
二、排除虚拟/无效网卡,只保留真实物理网卡
很多服务器装了 Hyper-V、WSL2 或安全软件,会产生大量虚拟网卡。可通过 InterfaceDescription 过滤常见物理网卡厂商标识:
Get-NetAdapter -IncludeHidden |
Where-Object { $_.MacAddress -and $_.MacAddress -notlike '00-00-00*' -and $_.MacAddress -notlike 'FF-FF-FF*' } |
Where-Object {
$_.InterfaceDescription -match 'Intel|Realtek|Broadcom|Qualcomm|Marvell|NVIDIA|AMD|VMXNET|E1000|RTL8168|RTL8111'
} |
Select-Object Name, InterfaceDescription, Status, MacAddress |
Export-Csv "$env:USERPROFILEDesktopPhysical_NIC_MAC.csv" -NoTypeInformation -Encoding UTF8
说明:
- 过滤掉全零(00-00-00…)、广播地址(FF-FF-FF…)等非法 MAC
- 按厂商关键词匹配描述字段,覆盖主流物理网卡和常见虚拟化网卡驱动名(如 VMXNET 是 VMware,E1000 是 VirtualBox)
- 如需更严格,可结合
PnPDeviceID判断是否为PCI*总线设备
三、批量导出多台远程服务器的 MAC 地址
提前准备服务器列表(如 servers.txt,每行一个主机名或 IP),然后用 Invoke-Command 并行执行:
$Servers = Get-Content "C: empservers.txt"
$ScriptBlock = {
Get-NetAdapter -IncludeHidden |
Where-Object { $_.MacAddress -and $_.MacAddress -notmatch '^00-00-00|^FF-FF-FF' } |
Select-Object @{n='Server';e={$env:COMPUTERNAME}}, Name, InterfaceDescription, Status, MacAddress
}
Invoke-Command -ComputerName $Servers -ScriptBlock $ScriptBlock -ErrorAction SilentlyContinue |
Export-Csv "C: empAll_Servers_MAC.csv" -NoTypeInformation -Encoding UTF8
注意:
- 需确保当前用户对目标服务器有管理员权限,且 WinRM 已启用(
winrm quickconfig) - 防火墙放行 WinRM(默认端口 5985 / 5986)
- 建议先用
Test-WSMan Server01验证连通性
四、补充:用 WMI(兼容旧系统,如 Windows Server 2008 R2)
若目标服务器未启用 PowerShell 3.0+ 或 NetAdapter 模块,可用传统 WMI 方式:
Get-WmiObject -Class Win32_NetworkAdapter |
Where-Object { $_.MACAddress -and $_.PNPDeviceID -notmatch '^SWD\' } |
Select-Object SystemName, Name, NetConnectionID, MACAddress, Speed |
Export-Csv "$env:USERPROFILEDesktopWMI_MAC_List.csv" -NoTypeInformation -Encoding UTF8
说明:
-
PNPDeviceID -notmatch '^SWD\'排除软件设备(如 KB Filter、RAS 异步适配器) - Win32_NetworkAdapter 返回的是“网卡硬件”,比 NetAdapter 更底层,但不显示状态(启用/禁用)
- 在 Server 2012+ 上推荐优先用
Get-NetAdapter,更准确、字段更丰富











