PowerShell: формат вывода Get-WmiObject для возврата только IP-адреса

Я хотел бы использовать 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 ответов


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

добавление более быстрого ответа (избегая операции Where-Object и using-like в списке):

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

надеюсь, это поможет


думал, что я поделюсь своим собственным вариантом выше, если это кому-то поможет. Только одна строчка:

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

Ура.


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

надеюсь, что это поможет !


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

возвращает IP-адрес сетевого подключения со шлюзом по умолчанию. Это именно то, что вам нужно в большинстве случаев:)

совместимость с Powershell 2.0 (Windows XP) и новее.