在PowerShell

时间:2016-03-15 18:37:51

标签: powershell powershell-v2.0

我希望根据命令输出中的'some string value'过滤结果。 例如,我需要从ipconfig的输出中获取MAC地址。 我试过了

 ipconfig /all | Select-String -Pattern "Physical Address" 

我正在获取所有MAC地址,如

 Physical Address. . . . . . . . . : AA-AA-AA-AA-AA-AA
 Physical Address. . . . . . . . . : AA-AA-AA-AA-AA-AA

我想只有wifi适配器的Mac地址。 SO输出将是AA-AA-AA-AA-AA-AA。 我不想要整行

Physical Address. . . . . . . . . : AA-AA-AA-AA-AA-AA

3 个答案:

答案 0 :(得分:2)

这适用于我的系统:

$Wireless_Adapter_Regex  =
@'
(?ms).+?Wireless LAN adapter .+?
   Physical Address. . . . . . . . . : (\S+)
'@

(ipconfig /all | out-string) -match $Wireless_Adapter_Regex > $null
$matches[1]

C4-D9-87-41-37-F1

答案 1 :(得分:0)

您可以使用以下命令:

ipconfig /all | Select-String -Pattern "\w\w-\w\w-\w\w-\w\w-\w\w-\w\w" -AllMatches | % { $_.Matches } | % { $_.Value }

答案 2 :(得分:0)

ipconfig /all | Select-String -Pattern "Physical Address"可以进一步扩展为通过':'分隔符拆分输出并显示第二个字段。示例如下。

PS C:\Users\jump> ipconfig /all | Select-String -SimpleMatch Physical
 -AllMatches | ForEach-Object { $_.ToString().split(":")[1]}
 B8-AC-6F-28-08-C5