如何在PowerShell中列出所有带名称、IP和MAC地址的网卡?
PowerShell查询网卡信息(名称、MAC、IP)解决方案
1. 最简实现方式
直接使用Get-NetIPConfiguration配合计算属性即可,无需组合多个命令,命令如下:
Get-NetIPConfiguration | Select-Object ` InterfaceAlias, ` @{Name = 'MAC地址'; Expression = { $_.NetAdapter.LinkLayerAddress }}, ` @{Name = 'IPv4地址'; Expression = { $_.IPv4Address.IPAddress }}
如果是高频使用,可以将逻辑封装为自定义函数存入PowerShell配置文件($PROFILE),后续直接调用即可:
- 运行
notepad $PROFILE打开配置文件 - 写入以下内容后保存:
function Get-NetCardInfo { Get-NetIPConfiguration | Select-Object ` @{Name = '网卡名称'; Expression = { $_.InterfaceAlias }}, ` @{Name = 'MAC地址'; Expression = { $_.NetAdapter.LinkLayerAddress }}, ` @{Name = 'IPv4地址'; Expression = { $_.IPv4Address.IPAddress }} }
- 重启PowerShell后,直接执行
Get-NetCardInfo即可输出所需信息。
2. 原命令MAC地址为空的原因
你执行的Get-NetIPConfiguration -Detailed | select InterfaceAlias,NetAdapter.LinkLayerAddress,IPv4Address返回空MAC地址,是因为Select-Object不支持直接通过父对象.子属性的格式读取嵌套属性,它会将NetAdapter.LinkLayerAddress作为一个完整的根级属性名查询,而Get-NetIPConfiguration返回的根级对象不存在该属性,因此返回空值。
如果需要过滤仅显示已启用的网卡,也可以使用Get-NetAdapter为主的命令实现:
Get-NetAdapter | Where-Object Status -eq 'Up' | Select-Object ` @{Name = '网卡名称'; Expression = { $_.Name }}, ` @{Name = 'MAC地址'; Expression = { $_.MacAddress }}, ` @{Name = 'IPv4地址'; Expression = { (Get-NetIPAddress -InterfaceIndex $_.InterfaceIndex -AddressFamily IPv4).IPAddress }}
内容的提问来源于stack exchange,提问作者jackhab
相关产品推荐
相关产品推荐

