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

时间:2010-07-12 18:04:00

标签: powershell wmi

我想使用Get-WmiObject Win32_NetworkAdapterConfiguration来返回网卡的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”)

5 个答案:

答案 0 :(得分:7)

IPAddress属性为string[],因此以下内容应如下:

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.*' }

答案 1 :(得分:3)

添加更快的答案(避免列表中的Where-Object和类似操作):

@(@(Get-WmiObject Win32_NetworkAdapterConfiguration | Select-Object -ExpandProperty IPAddress) -like "*.*")[0]

希望这有助于

答案 2 :(得分:1)

以为我会在上面分享我自己的变体,以防有人帮忙。只有一行:

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

干杯。

答案 3 :(得分:0)

(Get-WmiObject win32_Networkadapterconfiguration | Where-Object {$ _.ipaddress -notlike $ null})。IPaddress | Select-Object -First 1

希望这会有所帮助!

答案 4 :(得分:0)

(Get-WmiObject Win32_NetworkAdapterConfiguration | where { (($_.IPEnabled -ne $null) -and ($_.DefaultIPGateway -ne $null)) } | select IPAddress -First 1).IPAddress[0]

返回默认网关的网络连接的IP地址。 这正是您在大多数情况下所需要的:)

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