13

Как заставить Windows повторно сканировать доступные беспроводные сети из командной строки?

(т.е. я ищу командную строку, эквивалентную нажатию клавиши F5 в графическом интерфейсе.)

3 ответа3

9

Некоторое время я искал то же самое, к сожалению, я не могу найти что-либо в утилите 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

И так далее. :)

2

Сети обновляются только после завершения сканирования вашей картой WiFi. Команда NETSH не запрашивает сканирование; он отображает только кэшированные результаты последнего сканирования.

Открытие списка сетей Windows на панели задач обновляет результаты, поскольку сетевой инструмент панели задач запрашивает сканирование при его открытии.

Нет команды NETSH для запроса такого сканирования. Вам придется написать некоторый код, используя либо функцию Win32 WlanScan (обертки C # существуют, если вы предпочитаете это), либо функцию WinRT ScanAsync .

(Адаптировано / обновлено из источника.)


Связанные с:

0

Расширяя этот ответ, вот пакетный скрипт для автоматизации:

@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

не забудьте запустить его от имени администратора.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .