Сервер 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 ()