Что я хотел бы сделать, так это отключить 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
(* - это просто вместо экранирования амперсанда в скрипте)
Если вы еще этого не сделали, обязательно проверьте этого парня исследовательская работа.