В Windows 10 при доступности нескольких Wi-Fi сетей система автоматически выбирает беспроводную сеть с самым сильным сигналом (не зависимо от того какова скорость этого соединения и сколько устройств его используют). Однако при подключении вашего компьютера/ноутбука к проводной Ethernet сети, Windows продолжает использовать Wi-Fi сеть, несмотря на то, что скорость подключения по Ethernet кабелю значительно выше, а само подключение стабильнее и не подвержено помехам. Чтобы переключиться на проводное Ethernet-подключение пользователю Windows приходится каждый раз вручную отключать Wi-Fi соединение. Рассмотрим, как в Windows 10 настроить автоматическое отключение Wi-Fi при подключении к Ethernet сети.
Настройка WLAN Switching в BIOS/UEFI
У многих производителей компьютерного оборудования есть собственная реализация технологии LAN/WLAN Switching (может называться по-разному). Суть технологии заключается в том, что на компьютере пользователя одновременно должен передавать данные только один сетевой адаптер. Если во время использования устройством Wi-Fi сети на компьютере появилось более приоритетное проводное Ethernet-подключение, Wi-Fi адаптер должен автоматически переходить в режим ожидания. Тем самым экономятся ресурсы батареи и уменьшается нагрузка на беспроводную 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 10 откройте Центр управления сетями и общим доступом и откройте свойства вашего Wi-fi адаптера. Нажмите на кнопку Настроить.
В окне свойств сетевого адаптера перейдите на вкладку Дополнительно и в списке опций Wi-Fi адаптера найдите пункт «Отключить после установления проводного соединения / Disabled Upon Wired Connect». Измените значение опции на Включено и сохраните изменения.
Благодаря этой опции драйвер беспроводной сети будет отключать адаптер от Wi-fi сети при обнаружении активного Ethernet подключения.
Данная опция поддерживается далеко не на всех моделях Wi-Fi адаптеров. Если у вас он отсутствует, можно автоматизировать автоматические переключение на Ethernet подключение с помощью скрипта PowerShell.
Автоматизируем переключение между Wi-Fi и Ethernet сетями с помощью PowerShell
Для автоматического включения и отключение WLAN адаптера можно написать собственный скрипт и привязать его к событиям появления линка на LAN интерфейсе (Event-ID: 32 — Network link is established) и (Event-ID: 27 – Network link is disconnected) с помощью триггеров событий, но есть уже готовое решение на PowerShell.
Для решения задачи автоматического отключения Wi-Fi адаптера при подключении компьютера к проводной Ethernet сети можно воспользоваться готовым PowerShell скриптом WLAN Manager (оригинальная версия доступна здесь https://gallery.technet.microsoft.com/scriptcenter/WLAN-Manager-f438a4d7). Более новая версия скрипта WLAN Manager с расширенной поддержкой Windows 10 и нормальным определением виртуальных адаптеров есть на GitHub (https://github.com/jchristens/Install-WLANManager).
Суть скрипта заключается в том, что PowerShell скрипт создаетс новое задание планировщика в системе, которое запускает PoSh скрипт при загрузке системы. Скрипт периодически выполняет проверку активных сетевых адаптеров. Если скрипт обнаруживает наличие подключение по LAN (Ethernet), то WLAN интерфейс автоматически отключается. Если сетевой кабель Ethernet отключен, скрипт сам включает беспроводной Wi-Fi адаптер.
Скрипт состоит из 2 файлов:
- PSModule-WLANManager.psm1
- WLANManager.ps1
Рассмотрим как установить скрипт WLAN Manager в Windows 10. Откройте командную строку PowerShell с правами администратора и разрешите выполнение скрипта:
Set-ExecutionPolicy RemoteSigned
Установим скрипт в системе с помощью команды:
.\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» (Запретить подключение к сетям без домена при наличии доменной сети). Эта политика появилась в Windows 8 / Windows Server 2012 и выше).
Политика запрещает компьютерам одновременно подключаться к доменной сети и к сети без домена.
Однако при включении этой политики у вас могут возникнуть проблемы с подключением к Wi-Fi сети, если у вас на компьютере есть дополнительные интерфейсы (например, loopback или созданные ПО виртуализации).
Не совсем понял зачем оно нужно — для экономии батареи?
Вайфай имеет низкий приоритет в роутинг таблице.
Когда подключается кабель — ему назначается высокий приоритет и пакеты бегут по кабелю.
В винде этот момент предусмотрен.
он получает 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 создаются какие-то другие события при подключении линка, посмотрите внимательно в журнале.
Либо что-то с драйвером сетевого адаптера.
А как сделать наоборот? Чтобы при загрузке компьютера подключённого к роутеру по кабелю. Комп подключался и по ви-фи тоже.
Присоединяюсь к вопросу: нет ли какой аппликации/скрипта чтоб (даже вручную) переключать в один клик
интернет-соединение, когда в компе много адаптеров (проводных и безпроводных)?