2014-11-19 2 views
0

Я написал сценарий для получения IP-адреса удаленной машины, это работает по назначению. Проблема в том, что я пытаюсь показать только IPv4-адрес, а не адрес IPv6, поэтому я создал некоторую логику, но не работал, что я делаю неправильно здесь?WMI синтаксический разбор ожидаемого результата

Get-WmiObject -ComputerName remoteserver Win32_NetworkAdapterConfiguration | ? { 
    $_.IPAddress -ne $null -and $_.IPAddress -ne 'fe80*' 
} | select -ExpandProperty IPAddress 
+0

$ _ IPAddress массив, который в некоторых случаях будет содержать и IPv4. и IPv6-адрес. Какой результат вы ищете? все адаптеры, которые не настроены с ipv6 – Matt

ответ

1

Глядя ниже, вы можете увидеть IPAddress это свойство Win32_NetworkAdapterConfiguration объекта, но на самом деле это массив объектов:

DHCPEnabled  : False 
IPAddress  : {192.168.3.1, fe80::8c4a:cfd3:6c30:5695} 
DefaultIPGateway : 
DNSDomain  : 
ServiceName  : VMnetAdapter 
Description  : VMware Virtual Ethernet Adapter for VMnet1 
Index   : 5 

PS> ((Get-WmiObject Win32_NetworkAdapterConfiguration | select ipaddress).ipaddress).gettype() 

IsPublic IsSerial Name          BaseType 
-------- -------- ----          -------- 
True  True  Object[]         System.Array 

Это означает, что вам нужно перебрать массив с Еогеасп %, чтобы извлечь значение, которое вы хотите:

Get-WmiObject Win32_NetworkAdapterConfiguration | ? { $_.IPAddress -ne $null} | % { $_.ipaddress -inotlike 'fe80*' } 

Также обратите внимание на Я изменил сравнение с -ne на -inotlike. -ne матчей точно, в то время как вы можете использовать подстановочные * в -like сравнении

+0

, были благодарны за помощь и объяснение! – JoeRod

1

Можно также расширить IPAddress свойства перед фильтрацией:

Get-WmiObject -ComputerName remoteserver Win32_NetworkAdapterConfiguration | 
    select -ExpandProperty IPAddress | 
    ? { $_ -ne $null -and $_ -notlike 'fe80*' } 
Смежные вопросы