В Windows 10/11 при доступности нескольких Wi-Fi сетей система автоматически выбирает беспроводную сеть с самым сильным уровнем сигнала (не зависимо от того, какова скорость этого соединения и сколько устройств его используют). Но при подключении вашего компьютера/ноутбука к проводной Ethernet сети, Windows продолжает использовать Wi-Fi сеть, несмотря на то, что скорость подключения по Ethernet кабелю значительно выше, а само подключение стабильнее и не подвержено помехам. Чтобы переключиться на проводное Ethernet-подключение, пользователю Windows нужно каждый раз вручную отключать Wi-Fi на устройстве. Рассмотрим, как настроить автоматическое отключение Wi-Fi при подключении к Ethernet сети в Windows 10 и 11.
- Настройка WLAN Switching в BIOS/UEFI
- Отключить Wi-Fi после установки проводного подключения с помощью драйвера
- Отключить Wi-Fi при подключении Ethernet с помощью заданий планировщика
- PowerShell скрипт WLAN Manager для автопереключения между Wi-Fi и Ethernet сетями
- Отключение не-доменных беспроводных сетей с помощью GPO
Настройка WLAN Switching в BIOS/UEFI
У многих производителей ноутбуков и компьютеров есть собственная реализация технологии LAN/WLAN Switching (может называться по-разному). Суть технологии заключается в том, что на компьютере одновременно должен передавать данные только один сетевой адаптер. Если во время использования устройством Wi-Fi сети на компьютере появилось более приоритетное проводное Ethernet-подключение, Wi-Fi адаптер должен автоматически переходить в режим ожидания. Тем самым экономятся ресурсы батареи и уменьшается нагрузка на беспроводную сеть.
LAN/WLAN Switching можно включить в настройках BIOS/UEFI или в свойствах драйвера беспроводного сетевого адаптера (все зависит от производителя оборудования).
Перезагрузите компьютер и войдите в настройки UEFI / BIOS найдите и включите опцию LAN/WLAN Switching (на устройствах HP), Wireless Radio Controll (на устройствах Dell).
Данный функционал может называться по-другому или совсем отсутствовать в BIOS/UEFI других производителей.
Отключить Wi-Fi после установки проводного подключения с помощью драйвера
В настройках драйвера некоторых Wi-Fi адаптеров есть опция, позволяющая автоматически отключать Wi-Fi адаптер при наличии скоростного Ethernet подключения.
Откройте диспетчер устройства Windows (
devmgmt.msc
), найдите ваш Wireless сетевой адаптер в секции Network adapters и откройте его свойства. Перейдите на вкладку Advanced.
В списке опций Wi-Fi адаптера найдите пункт «Отключить после установления проводного соединения / Disabled Upon Wired Connect». Измените значение опции на Включено и сохраните изменения.
Благодаря этой опции драйвер беспроводной сети будет отключать адаптер от Wi-fi сети при обнаружении активного Ethernet LAN подключения.
Данная опция поддерживается далеко не на всех моделях Wi-Fi адаптеров. Для других беспроводных сетевых адаптеров вы можете автоматизировать автоматические переключение на Ethernet с помощью задания планировщика или скрипта PowerShell.
Отключить Wi-Fi при подключении Ethernet с помощью заданий планировщика
Рассмотрим, как автоматически включить и отключить Wi-Fi адаптер в Windows с помощью специальных заданий планировщика (Task Scheduler), которые привязаны к событию подключения/отключения Ethernet кабеля (триггеры событий планировщика Windows).
В первую очередь нужно включить служу Wired AutoConfig (dot3svc) и настроить ее на автоматический запуск. Можно проверить состояние службы и настроить ее автозапуск с помощью PowerShell:
Set-Service dot3svc -startuptype automatic -passthru
Start-Service dot3svc
Get-Service dot3svc
Теперь откройте журнал событий Event Viewer (консоль
eventvwr.msc
) и перейдите в раздел Applications and Services Logs -> Windows -> Wired-AutoConfig -> Operational. Здесь нас интересуют два событий:
- Event ID 15501 — The network adapter has been connected. Появляется при подключении Ethenet кабеля/линка.
- Event ID 15500 — The network adapter has been unplugged. Событие отключение LAN кабеля.
Event-ID: 32 — Network link is established
) и (
Event-ID: 27 – Network link is disconnected
).Мы привяжем к данным событиям PowerShell команды для включения и отключения Wi-Fi адаптера. Для этого вам нужно получить имя вашего Wi-Fi адаптера. Вы можете вывести список сетевых адаптеров с помощью PowerShell:
Get-NetAdapter
В нашем примере название адаптера TPLinkWiFi.
Щелкните по событию 15501 в Event Viewer и выберите пункт Attach task to this event.
Укажите имя задания планировщика DisableWiFi_if_Ethernet_Connected-15501. В качестве действия выберите Start a program. Чтобы отключить Wi-Fi адаптер нужно выполнить такой код:
Program:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Add arguments:
-NoProfile -WindowStyle hidden -ExecutionPolicy Bypass -Command &{Disable-NetAdapter -Name TPLinkWiFi -confirm:$False}
Аналогичным образом создайте еще одно задание планировщика для события 15500.
- Укажите имя EnableWiFi_if_Ethernet_Disconnected-15500
- Задайте следующий код:
Command:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Argument:-NoProfile -WindowStyle hidden -ExecutionPolicy Bypass -Command &{Enable-NetAdapter -Name TPLinkWiFi -confirm:$False}
В свойствах обоих заданий перейдите на вкладку Conditions и отключите опцию Start the task only if the computer is on AC Power.
Теперь попробуйте подключить сетевой кабель LAN. Через пару секунд ваш Wi-Fi адаптер будет автоматически отключен (Status=Dormant).
При отключении Ethernet, задание планировщика включаете беспроводной адаптер и Windows автоматически подключается к вашей Wi-Fi сети.
PowerShell скрипт WLAN Manager для автопереключения между Wi-Fi и Ethernet сетями
Для решения задачи автоматического отключения Wi-Fi адаптера при подключении компьютера к проводной Ethernet сети можно воспользоваться готовым PowerShell скриптом WLAN Manager. Актуальная версию версия скрипта WLAN Manager с расширенной поддержкой Windows 10 и корректным определением виртуальных адаптеров есть на GitHub (https://github.com/jchristens/Install-WLANManager).
PowerShell скрипт создаст новое задание планировщика в системе, которое периодически выполняет проверку активных сетевых адаптеров. Если скрипт обнаруживает наличие подключение по LAN (Ethernet), то WLAN интерфейс автоматически отключается. Если сетевой кабель Ethernet отключен, скрипт сам включает беспроводной Wi-Fi адаптер.
Скрипт состоит из 2 файлов:
- PSModule-WLANManager.psm1
- WLANManager.ps1
Рассмотрим, как установить скрипт WLAN Manager в Windows 10. Откройте командную строку PowerShell с правами администратора и разрешите выполнение скрипта:
Set-ExecutionPolicy RemoteSigned
Установите скрипт в Windows с помощью команды:
.\WLANManager.ps1 -Install:System
Скрипт можно установить для запуска из под прав пользователя (Install:User) или для запуска из-под системы (Install:System).
Verifying WLAN Manager version information… Missing
Writing WLAN Manager version information… Done
Verify WLAN Manager Files… Missing
Installing WLAN Manager Files… Done
Verify WLAN Manager Scheduled Task… Missing
Installing WLAN Manager Scheduled Task… Done
Можно заставить скрипт оповещать пользователя о переключении между Wi-Fi и LAN сетью с помощью всплывающего уведомления:
.\WLANManager.ps1 -Install:User -BalloonTip:$true
Убедитесь, что в планировщике появилось новое задание WLAN Manager.
Перезагрузите компьютер. После загрузки планировщик запустите скрипт «C:\Program Files\WLANManager\WLANManager.ps1», который каждую секунду проверяет сетевые подключения и, если будет обнаружено LAN подключение, все доступные Wi-Fi адаптеры будут отключены. При отключении LAN кабеля, скрипт автоматически включает беспроводные Wi-Fi адаптеры.
Скрипт WLAN Manager корректно работает как на Windows 10, так и в Windows 8.1 и 7.
.\WLANManager.ps1 Remove:System
Отключение не-доменных беспроводных сетей с помощью GPO
В групповых политиках есть отдельная настройка, которая позволяет запретить подключение к Wi-Fi сетям, когда компьютер подключен к корпоративной доменной сети через LAN. Эта политика находится в разделе Computer Configuration -> Policies ->Administrative Templates -> Network (Сеть) ->Windows Connection Manager (Диспетчер подключений Windows) и называется «Prohibit connection to non-domain networks when connected to domain authenticated network» (Запретить подключение к сетям без домена при наличии доменной сети).
Политика запрещает компьютерам одновременно подключаться к доменной сети и к сети без домена.
Однако при включении этой политики у вас могут возникнуть проблемы с подключением к Wi-Fi сети, если у вас на компьютере есть дополнительные интерфейсы. Например, loopback интерфейсу или сетевые карты, которые создаются при установке десктопных гипервизоров (VMware Workstation, Hyper-V, VirtualBox и т.д.)
Также в доменной сети вы можете дополнительно запрещать использование Wi-Fi при наличии активного подключении к доменной LAN. Для этого включите политику Minimize the number of simultaneous connections to the Internet or a Windows Domain в разделе Computer Configuration -> Administrative Templates -> Network -> Windows Connection Manager. Включите политику и выберите значение 3=Prevent Wi-Fi when on Ethernet.
Не совсем понял зачем оно нужно — для экономии батареи?
Вайфай имеет низкий приоритет в роутинг таблице.
Когда подключается кабель — ему назначается высокий приоритет и пакеты бегут по кабелю.
В винде этот момент предусмотрен.
он получает 2 ip адреса, что ни есть гуд
У компьютера может много сетевых карт и вайфаев. И у всех стоять шлюз по умолчанию.
Это все неважно.
Но только у одной сетевухи шлюзу должен быть присвоен максимальный приоритет и весть трафик туда будет ходить,за исключением ситуации если адаптеры принадлежат одной сети и целевой адрес тоже в этой сети — тут уже кто был первым туда и пойдут.
Раньше вообще можно было приоритет интерфейсов выставлять из GUI. В Win 10 почему-то такого больше нет.
Например когда ноутбук кабелем подключен к доверенной сети, а по wifi к гостевой. На случай компрометации ноутбука, например.
для безопасности сетей
Когда wi-fi активно + пользователь подключает ethernet кабель, иногда sccm агент не понимает, как ему надо ходить к серверу + ТП не может подключится удаленным помощником.
Уважаемый админ, у меня скрипт на Windows 7 не сработал. По-моему , скрипт не может создать задачу в планировщике заданий. Выдаёт эту ошибку :
Verify WLAN Manager Scheduled Task... Get-STask : Не удается привязать параметр "ErrorAction". Не удается преобразовать
значение "Ignore" в тип "System.Management.Automation.ActionPreference" из-за недопустимых значений перечисления. Укажите одно из следующих значений перечисления и повторите попытку. Возможны следующие значения перечисления: "SilentlyContinue, Stop, Continue, Inquire".
C:\windows\system32\PSModule-WLANManager.psm1:165 знак:62
+ If ((Get-STask -TaskName "$TaskName" -ErrorAction <<<< Ignore) -eq $null)
+ CategoryInfo : InvalidArgument: (:) [Get-STask], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Get-STask
Скорее всего у вас старая версия PowerShell. Обновите версию PowerShell до 5.1 (нужно установить Windows Management Framework 5.1).
Спасибо большое вам. Сработал скрипт.
Спасибо большое, такая же проблема была, если бы не ваш комментарий, наверное мозг бы себе поломал)
Добрый день.
На Win7 Powershell скрипт установил по инструкции. PS никакую ошибку не выдаёт. В task scheduler wlan manager в рабочем состоянии стоит . Но wi fi не отключается при подключении кабель. В чём проблема ?
В журналах появляются события (Event-ID: 32 — Network link is established) и (Event-ID: 27 – Network link is disconnected)?
Да, только события ID : 27 появляются.
Статья изначально писалась для Windows 10, возможно в Win 7 создаются какие-то другие события при подключении линка, посмотрите внимательно в журнале.
Либо что-то с драйвером сетевого адаптера.
А как сделать наоборот? Чтобы при загрузке компьютера подключённого к роутеру по кабелю. Комп подключался и по ви-фи тоже.
Присоединяюсь к вопросу: нет ли какой аппликации/скрипта чтоб (даже вручную) переключать в один клик
интернет-соединение, когда в компе много адаптеров (проводных и безпроводных)?
Для WLAN Manager заявлено [Wired ON -> WiFi Off / Wifi Off -> Wired On].
Чтобы вайфай подключался автоматом при загрузке windows 10, сделал следующее:
создал в планировщике заданий задачу выполнения команды подключения к сети вайфай при загрузке (включении компьютера):
netsh wlan connect name=”имя сети”
В политике Minimize the number of simultaneous connections to the Internet or a Windows Domain
отсутствует возможность установки значений
Windows 2016 Server
Скорость подключения по Ethernet кабелю значительно выше? Чего вдруг, роутер отдает по кабелю 100Мб максимум, wifi до 300Мб, другое дело насколько стабильнее.
Ну если у вас до сих пор 100 на ethernet, но 300 на wifi, то вам и не надо )
А так, сейчас уже даже для soho сегмента не найти 100 мб свичи. в продаже только 1Gb
Не думаю, сейчас вот смотрю валом.на диапазон от 10/100 и до /1000.