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

Отключить определенную карту Ethernet с помощью пакетных команд в Windows

Что я хотел бы сделать, так это отключить NIC на основе имени подключения (также известного: то, что вы видите в окне «сетевые подключения», или то, что вы бы использовали с командами netsh).

Я знаю, что включение / отключение можно выполнить с помощью devcon, однако devcon идентифицирует устройство, используя идентификатор оборудования физического сетевого адаптера (например: PCI\VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10\4&282B82B8&0&08F0), а не имя связанного с ним соединения (например: "Подключение по локальной сети 2").

Итак, в основном мне нужно что-то, чтобы сопоставить имя соединения с идентификатором оборудования устройства, возвращаемым:

devcon listclass Net

Затем отключить можно через devcon.

Есть идеи, как это сделать? Есть ли более умный / простой способ сделать это?

XP (Проводной LAN)

Здесь NetConnectionStatus = 2 получает активный (подключенный) сетевой интерфейс и "more +1" пропускает строку заголовка:

C:\>wmic.exe nic where "NetConnectionStatus=2" get PNPDeviceID |more +1
PCI\VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10\4&1F7DBC9F&1&30F0

Затем подачу струны (для краткости до первого амперсанда) на devcon чтобы отключить, а затем включить подключение к Интернету:

C:\>devcon.exe disable PCI\VEN_10EC
PCI\VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10\4&1F7DBC9F&1&30F0: Disabled
1 device(s) disabled.

C:\>devcon.exe enable PCI\VEN_10EC
PCI\VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10\4&1F7DBC9F&1&30F0: Enabled
1 device(s) enabled.

Вывод wmic широк, поэтому с отключенным переносом слов в Блокноте, если вы посмотрите на 1.txt вот так, все будет довольно ясно:

C:\>wmic.exe nic > 1.txt

C:\>1.txt


Windows 7 Подключение к Wi-Fi (другой подход без devcon.exe)

Это сработало для меня:

C:\>wmic.exe nic where "NetConnectionStatus=2" get Index |more +1
12
C:\>wmic.exe path win32_networkadapter where index=12 call disable
C:\>wmic.exe path win32_networkadapter where index=12 call enable

Чтобы отключить соединение с именем Подключение по локальной сети и, следовательно, его устройство:

netsh interface set interface "Local Area Connection" DISABLE

Чтобы убедиться в этом:

netsh interface show interface

Это отключит сетевое устройство, которое можно проверить с помощью диспетчера устройств.

Вот начало - использование wmic даст вам то, что вы можете скормить devcon,

wmic:root\cli>nic where(NetConnectionID="Local Area Connection") get PNPDeviceID
PNPDeviceID
PCI\VEN_8086&DEV_10BD&SUBSYS_10FD1734&REV_02\3&33FD14CA&0&C8

Итак, сценарий оболочки для поиска Идентификатор устройства из Подключение по локальной сети читал бы,

wmic nic where(NetConnectionID="Local Area Connection") get PNPDeviceID | find "PCI\"  

Вы можете использовать devcon с частичным совпадением идентификатора устройства, вот команду, которую я использовал для отключения WLAN в 70 Asus Eee Box B203s,

devcon disable PCI\VEN_1814*DEV_0781  

(* - это просто вместо экранирования амперсанда в скрипте)

Если вы еще этого не сделали, обязательно проверьте этого парня исследовательская работа.