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

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

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

Restart-NetAdapter -Name $iface

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

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

1 ответ1

2

Командлеты форматирования возвращают строки, которые очень удобны для чтения людьми, но больше не являются реальными объектами. В частности, 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, который вы можете использовать, если хотите.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .