PowerShell:格式化Get-WMIOObject输出以仅返回IP地址

PowerShell:格式化Get-WMIOObject输出以仅返回IP地址,powershell,wmi,Powershell,Wmi,我想使用Get-WmiObject Win32_NetworkAdapter配置返回网卡的ip地址。不幸的是,我不知道如何格式化输出以只显示IPv.4地址 Get-WmiObject Win32_NetworkAdapterConfiguration | Select IPAddress | Where-Object {$_.IPaddress -like "192.168*"} 显示: IPAddress --------- {192.168.56.1, fe80::8980:15f4:e2

我想使用Get-WmiObject Win32_NetworkAdapter配置返回网卡的ip地址。不幸的是,我不知道如何格式化输出以只显示IPv.4地址

Get-WmiObject Win32_NetworkAdapterConfiguration | Select IPAddress | Where-Object {$_.IPaddress -like "192.168*"}
显示:

IPAddress
---------
{192.168.56.1, fe80::8980:15f4:e2f4:aeca}

以上面的输出为例,我希望它只返回192.168.56.1(有些客户端有多个NIC,因此是“Where Object”)

IPAddress属性是一个
字符串[]
,因此应该执行以下操作:

gwmi Win32_NetworkAdapterConfiguration |
    Where { $_.IPAddress } | # filter the objects where an address actually exists
    Select -Expand IPAddress | # retrieve only the property *value*
    Where { $_ -like '192.168.*' }

我想我会分享我自己在上面的变化,以防它帮助别人。只有一行:

Get-WmiObject win32_networkadapterconfiguration | where { $_.ipaddress -like "1*" } | select -ExpandProperty ipaddress | select -First 1
干杯。

(获取WmiObject win32_Networkadapterconfiguration |其中对象{$\u.ipaddress-不象$null})。ipaddress |选择对象-第一个1

希望这会有所帮助

添加更快的答案(避免在列表上使用Where对象和类操作):

希望这有帮助

(Get-WmiObject Win32_NetworkAdapterConfiguration | where { (($_.IPEnabled -ne $null) -and ($_.DefaultIPGateway -ne $null)) } | select IPAddress -First 1).IPAddress[0]
返回具有默认网关的网络连接的IP地址。 在大多数情况下,这正是您需要的:)


与Powershell 2.0(Windows XP)及更高版本兼容。

以上内容仅适用于以“192.168.*”开头的IPv4地址。如果您将最后一个Where子句替换为“{$\ notlike':'}”,它将只提供IPv4地址。我需要使用
?{$\ notlike*:*”}
。请您详细说明您的答案,并添加有关您提供的解决方案的更多描述,好吗?
(Get-WmiObject Win32_NetworkAdapterConfiguration | where { (($_.IPEnabled -ne $null) -and ($_.DefaultIPGateway -ne $null)) } | select IPAddress -First 1).IPAddress[0]