2015-11-17 4 views
0

Я пытаюсь получить мой локальный IP-адрес с:Выбора массива из командлета

gwmi Win32_NetworkAdapterConfiguration | Select Description,IPAddress | ?{$_.IPAddress -ne $null} 

Теперь, это дает мне описание (имя) адаптер, и IPv4-адрес и адрес IPv6 в массиве строк. Как я могу выбрать только адрес IPv4 в командлете Select-cmdlet? Я пробовал несколько вещей, но не могу найти решение.

Спасибо!

+0

Чтобы просто изменить синтаксис, что у вас есть прямо сейчас, вот решение. 'gwmi Win32_NetworkAdapterConfiguration | ? {$ _. IPAddress -ne $ null} | Выберите Описание, @ {n = 'IPAddress'; e = {$ _. IpAddress [0]}} ' – FoxDeploy

+0

Хм, интересно. Спасибо –

+0

От Mathias: Это даст неожиданные результаты на адаптерах с только адресами IPv6 – Matt

ответ

0

Вы можете использовать -match с шаблоном регулярного выражения, который соответствует IPv4-адреса в свойстве рассчитайте:

$IPv4Pattern = '^(\d{1,3}\.){3}\d{1,3}$' 
gwmi Win32_NetworkAdapterConfiguration | Select Description,@{Name="IPAddress";Expr={$_.IPAddress|Where{ $_ -match $IPv4Pattern}}} | ?{$_.IPAddress -ne $null}