@Nordman99

Как в Powershell`e задать поиск по маске?

Всем привет, столкнулся с неожиданной ситуацией своего непонимания применения регулярных выражений и текстовых шаблонов:
решил как то воспользоваться командлетом get-netipaddress
Получаю список всех сетевых интерфейсов со всеми их параметрами
IPAddress         : xxxx::xxxx:xxxx:xxxx%xx
InterfaceIndex    : 49
InterfaceAlias    : Сетевое подключение Bluetooth
AddressFamily     : IPv6
Type              : Unicast
PrefixLength      : 64
PrefixOrigin      : WellKnown
SuffixOrigin      : Link
AddressState      : Deprecated
ValidLifetime     : Infinite ([TimeSpan]::MaxValue)
PreferredLifetime : Infinite ([TimeSpan]::MaxValue)
SkipAsSource      : False
PolicyStore       : ActiveStore

IPAddress         : xxxx::xxxx:xxxx:xxxx%xx
InterfaceIndex    : 25
InterfaceAlias    : Ethernet 4
AddressFamily     : IPv6
Type              : Unicast
PrefixLength      : 64
PrefixOrigin      : WellKnown
SuffixOrigin      : Link
AddressState      : Preferred
ValidLifetime     : Infinite ([TimeSpan]::MaxValue)
PreferredLifetime : Infinite ([TimeSpan]::MaxValue)
SkipAsSource      : False
PolicyStore       : ActiveStore

IPAddress         : xxxx::xxxx:xxxx:xxxx%xx
InterfaceIndex    : 18
InterfaceAlias    : Ethernet
AddressFamily     : IPv6
Type              : Unicast
PrefixLength      : 64
PrefixOrigin      : WellKnown
SuffixOrigin      : Link
AddressState      : Deprecated
ValidLifetime     : Infinite ([TimeSpan]::MaxValue)
PreferredLifetime : Infinite ([TimeSpan]::MaxValue)
SkipAsSource      : False
PolicyStore       : ActiveStore


Как видим среди них есть сетевые интерфейсы "Ethernet" и "Ethernet 4"
Хочу получить вывод только всех интерфейсов Ethernet, пробовал следущие конструкции:
Get-NetIPaddress | where ({$_.interfacealias -contains "ethernet"})
Get-NetIPaddress | where ({$_.interfacealias -in "ethernet"})
Get-NetIPaddress | where ({$_.interfacealias -contains "ethernet*"})
Get-NetIPaddress | where ({$_.interfacealias -contains "ethernet.*"})
Get-NetIPaddress | where ({$_.interfacealias -contains $($p="ethernet\s.*"; $p)})

Но все они либо дают вывод только интерфейсов с названием строго Ethernet, т.е. Ethernet 4 не воводят
либо вообще ничего не дают
зато
Get-NetIPaddress | where ({$_.interfacealias -contains "ethernet 4"})

Выдает вывод только интерфейса с Ethernet 4
А т.к. допустим я хочу вывести все интерфейсы Ethernet у которых может быть N-ое кол-во, как мне задать шаблон поиска?
  • Вопрос задан
  • 236 просмотров
Решения вопроса 1
@BeatHazard
Приветствую.
Вот так будет правильно:
get-netipaddress | Where-Object {$_.InterfaceAlias -like "Ethernet*"}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы