
Я пытаюсь перезапустить сетевой интерфейс через 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-Object
into ?
— это удобный стандартный псевдоним PowerShell, который вы можете использовать при желании.