Как перезапустить определенный сетевой интерфейс с помощью powershell

601
Marlon

Я пытаюсь перезапустить сетевой интерфейс PowerShell с определенным IP-адресом. Я сделал следующие заявления:

$iface = Get-NetIPAddress | Where-Object -FilterScript { $_.IPAddress -like "10.212*" } | format-wide -Property InterfaceAlias 

Получил интерфейс с широким форматом, но используя переменную ниже, вещи не работают должным образом.

Restart-NetAdapter -Name $iface 

Это правильный способ использовать переменную?

Использование powershell версии 5.

0

1 ответ на вопрос

1
Ben N

Командлеты форматирования возвращают строки, которые очень удобны для чтения людьми, но больше не являются реальными объектами. В частности, Format-Wideдобавляет несколько разрывов строк, которые, вероятно, сбивают с толку Restart-NetAdapter.

Созданные объекты Get-NetIPAddressимеют InterfaceIndexсвойство, которое мы можем использовать для получения объекта сетевого адаптера Get-NetAdapter. Тогда объект адаптера может быть передан по трубопроводу Restart-NetAdapter.

Get-NetAdapter -InterfaceIndex (Get-NetIPAddress | ? {$_.IPAddress -like '10.212.*'}).InterfaceIndex | Restart-NetAdapter 

Также обратите внимание на псевдоним Where-Objectв. ?Это удобный стандартный псевдоним PowerShell, который вы можете использовать, если хотите.