需要特定的过滤输出

时间:2015-01-18 10:30:57

标签: powershell

我尝试这个命令

get-wmiobject win32_networkadapter -filter "netconnectionstatus = 2" |
  Select macaddress | Select -Last 1

我想摆脱格式化表格中的macaddress。

我该怎么做?我只想要macaddress而不是表。

1 个答案:

答案 0 :(得分:0)

Select-Object选择对象的属性(以及其他内容)。但结果仍然是对象列表(表格输出显示对象的属性)。如果您只想要特定属性的值,则需要对其进行扩展:

get-wmiobject win32_networkadapter -filter "netconnectionstatus = 2" |
  Select -Expand macaddress | Select -Last 1

编辑:在评论中提到的@FrodeF,您还可以将2个Select-Object语句合并为一个:

get-wmiobject win32_networkadapter -filter "netconnectionstatus = 2" |
  Select -Expand macaddress -Last 1

但请注意,在这种情况下,-Last 1适用于Select-Object的输入,而不适用于所选属性。这适用于MAC地址,因为每个网络适配器只能有一个,但在其他情况下可能无法产生所需的结果。例如:

PS C:\> Get-WmiObject Win32_NetworkAdapterConfiguration |
>> ? { $_.IPEnabled -eq $true } |
>> select -Expand IPAddress -Last 1
>>
192.168.56.99
fe80::21ba:e68c:ebd0:1046
PS C:\> Get-WmiObject Win32_NetworkAdapterConfiguration |
>> ? { $_.IPEnabled -eq $true } |
>> select -Expand IPAddress | select -Last 1
>>
fe80::21ba:e68c:ebd0:1046

此处IPAddress属性有2个值(IPv4地址和IPv6地址)。因此,在第一种情况下select -Expand IPAddress -Last 1选择最后一个适配器配置对象,然后展开IP地址列表。在第二种情况下,select -Expand IPAddress | select -Last 1展开所有适配器的IP地址列表,然后选择结果列表的最后一项。