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

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

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

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

Есть интерфейс с форматом format-wide, но при использовании переменной ниже все работает не так, как надо.

Restart-NetAdapter -Name $iface

Правильный ли способ использования переменной?

Использую powershell версии 5.

решение1

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

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

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

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

Связанный контент