【发布时间】:2015-01-18 10:30:57
【问题描述】:
我试试这个命令
get-wmiobject win32_networkadapter -filter "netconnectionstatus = 2" |
Select macaddress | Select -Last 1
我想摆脱 macaddress 的格式表。
我该怎么做?我只想要 macaddress 而不是 table。
【问题讨论】:
标签: powershell
我试试这个命令
get-wmiobject win32_networkadapter -filter "netconnectionstatus = 2" |
Select macaddress | Select -Last 1
我想摆脱 macaddress 的格式表。
我该怎么做?我只想要 macaddress 而不是 table。
【问题讨论】:
标签: powershell
Select-Object 选择对象的属性(除其他外)。结果仍然是对象列表(表格输出显示对象的属性)。如果您只需要特定属性的值,则需要对其进行扩展:
get-wmiobject win32_networkadapter -filter "netconnectionstatus = 2" |
Select -Expand macaddress | Select -Last 1
编辑:正如@FrodeF 在 cmets 中提到的,您也可以将 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 地址列表,然后选择结果列表的最后一项。
【讨论】:
Select-Object-calls 合并到Select-Object -ExpandProperty MacAddress -Last 1