Как заставить Windows повторно сканировать доступные беспроводные сети из командной строки?
(т.е. я ищу командную строку, эквивалентную нажатию клавиши F5 в графическом интерфейсе.)
Как заставить Windows повторно сканировать доступные беспроводные сети из командной строки?
(т.е. я ищу командную строку, эквивалентную нажатию клавиши F5 в графическом интерфейсе.)
Некоторое время я искал то же самое, к сожалению, я не могу найти что-либо в утилите netsh, чтобы сделать это. Лучшее решение, которое мне удалось найти, - это отключить, а затем снова включить интерфейс с помощью команд netsh. Существует небольшая задержка (1-2 секунды) после включения интерфейса, где он не будет перечислять какие-либо сети, но это не должно быть слишком сложным для обхода.
Я использую следующие команды:
netsh interface set interface name="<NIC name>" admin=disabled
netsh interface set interface name="<NIC name>" admin=enabled
netsh wlan show networks
Редактировать: Как получить тогда
"<NIC name>"
, то есть имя карты сетевого интерфейса.
Прежде всего используйте команду netsh wlan show networks
Если включен WLAN, вы получите сообщение, подобное этому
C:\Users\user1>netsh wlan show networks
Interface name : WiFi
There are 2 networks currently visible.
SSID 1 : Cross
Network type : Infrastructure
Authentication : WPA2-Personal
Encryption : CCMP
SSID 2 : WLAN-0A8E41
Network type : Infrastructure
Authentication : WPA2-Personal
Encryption : CCMP
Итак, вы видите, в этом случае, имя интерфейса WiFi
Теперь вы можете продолжить, как описано выше, например, чтобы отключить карту WLAN:
netsh interface set interface name="WiFi" admin=disabled
И так далее. :)
Сети обновляются только после завершения сканирования вашей картой WiFi. Команда NETSH
не запрашивает сканирование; он отображает только кэшированные результаты последнего сканирования.
Открытие списка сетей Windows на панели задач обновляет результаты, поскольку сетевой инструмент панели задач запрашивает сканирование при его открытии.
Нет команды
NETSH
для запроса такого сканирования. Вам придется написать некоторый код, используя либо функцию Win32 WlanScan (обертки C # существуют, если вы предпочитаете это), либо функцию WinRT ScanAsync .
(Адаптировано / обновлено из источника.)
WiFiAdapter
WlanScan
Расширяя этот ответ, вот пакетный скрипт для автоматизации:
@ECHO OFF
for /f "tokens=*" %%a in ('netsh wlan show networks ^| grep -oP "Interface\s+name\s*:\s*\K(.*)"') do set "interface_name=%%a"
netsh interface set interface name=%interface_name% admin=disabled
netsh interface set interface name=%interface_name% admin=enabled
netsh wlan show networks
не забудьте запустить его от имени администратора.