如何用PowerShell提取‘Ethernet 2’网卡的无特殊字符MAC地址字符串?
解决PowerShell获取干净MAC地址的问题
嘿,我懂你现在的麻烦——用out-string确实容易带出多余的换行或空白这类非法字符,其实有更简洁直接的方法,完全不用绕弯子处理子串就能拿到Ethernet 2适配器的纯净MAC地址字符串。
最直接的方案
Get-NetAdapter返回的网卡对象本身就有一个纯字符串格式的MacAddress属性,根本不需要用out-string转换。直接这样写就行:
# 直接获取目标网卡的MAC地址字符串 $currMacAddr = (Get-NetAdapter | Where-Object { $_.Name -match 'Ethernet 2' }).MacAddress
更严谨的版本(避免多匹配)
如果担心系统里有多个名字包含Ethernet 2的网卡(虽然概率很低),可以加上-First 1确保只取第一个匹配的结果,同时用-ExpandProperty直接提取属性值:
$currMacAddr = Get-NetAdapter | Where-Object { $_.Name -match 'Ethernet 2' } | Select-Object -ExpandProperty MacAddress -First 1
精确匹配网卡名称
如果要严格匹配网卡名字(而不是正则模糊匹配),把-match换成-eq会更准确:
$currMacAddr = (Get-NetAdapter | Where-Object { $_.Name -eq 'Ethernet 2' }).MacAddress
为什么你的原代码会有问题?
你原来用out-string的问题在于:这个命令会把输入对象转换成带格式的字符串,默认会在末尾加上换行符(就是你用Substring切掉的那个多余字符)。其实完全没必要走这个流程,直接访问网卡对象的MacAddress属性就能拿到干净的字符串。
内容的提问来源于stack exchange,提问作者Vasyl Stepulo
相关产品推荐
相关产品推荐

