Назад | Перейти на главную страницу

Что означает «Нет» в командлете Get-NetAdapter Powershell?

Сервер 2012, Powershell 3.0.

Я выполняю некоторую работу, которая требует автоматизации включения и отключения сетевых адаптеров. Вот пример того, что я вижу, когда бегу Get-NetAdapter:

Name                      InterfaceDescription                    ifIndex Status       MacAddress             LinkSpeed
----                      --------------------                    ------- ------       ----------             ---------
Slot 0 Port 4             HP NC382i DP Multifunction Gigabi...#53      15 Not Present  11-80-1B-94-2A-82          0 bps
Slot 0 Port 2 (TM-2)      HP NC382i DP Multifunction Gigabi...#51      14 Up           11-80-1B-94-27-72         1 Gbps
Team 1 (Team)             Microsoft Network Adapter Multiplexo...      17 Up           11-80-1B-94-2A-72         1 Gbps
Slot 0 Port 3             HP NC382i DP Multifunction Gigabi...#52      13 Disabled     11-80-1B-94-2A-80         1 Gbps
Slot 0 Port 1 (TM-1)      HP NC382i DP Multifunction Gigabi...#50      12 Up           11-80-1B-94-2A-70         1 Gbps

Обратите внимание, что атрибут Status не является двоичным. Это может быть Up, Disabled или Not Present.

Когда я бегу Enable-NetAdapter на сетевой карте со статусом «Отсутствует» команда возвращается без вывода сообщений об ошибке, но она не включает сетевой адаптер. Затем я вручную включил сетевой адаптер, щелкнув его значок на панели управления правой кнопкой мыши и выбрав «Включить». Теперь его статус был Включен со статусом Работает.

Затем я побежал Disable-NetAdapter на сетевой карте. Теперь он получил статус «Отключено».

Сейчас Enable-NetAdapter Командлет работал должным образом и включает сетевой адаптер.

В Not Present состояние поступает из InterfaceOperationalStatus класса MSFT_NetAdapter. Он используется для сетевых интерфейсов, которые известны, но в настоящее время недоступны, например, из-за отсутствия оборудования. Другая причина может заключаться в том, что драйвер для оборудования просто не был загружен в то время. Если вы отключите сетевую карту с помощью диспетчера устройств, драйвер будет выгружен. Виртуальные сетевые карты, например, VMware Workstation, будут отключены и отображаться как «Нет» до тех пор, пока вы не загрузите виртуальную машину, которая их использует.

Powershell обрабатывает только интерфейсы, а не сами сетевые адаптеры, используя Enable-NetAdapter, Disable-NetAdapter и Get-NetAdapter. Если устройство было отключено, вам, вероятно, придется использовать командлеты управления устройством

Если вы выключили сетевую карту (устройство), она может отображаться как «Статус: отсутствует». Чтобы включить устройство, вам просто нужно использовать команду Get-WmiObject:

$ wmi = Get-WmiObject -Class Win32_NetworkAdapter -filter "Имя LIKE '% Adapter%'"

$ wmi.enable ()

Источник: http://blogs.technet.com/b/heyscriptingguy/archive/2014/01/13/enables-and-disables-network-adapters-with-powershell.aspx