Microsoft Edge — мой основной браузер, и в целом он меня устраивает. При этом есть набор параметров, которые я всегда изменяю на своих многочисленных системах, в том числе экспериментальных ВМ. Сегодня я делюсь скриптом PowerShell для быстрой настройки.
[+] Сегодня в программе
Что настраивается
Я вижу три категории настроек. Отчасти они пересекаются, причем вторую и третью категории я отношу к раздражителям.
- Личные предпочтения персонализации. Например, я люблю аскетичную новую вкладку. В крайнем случае — с картинкой Bing, но точно без новостей.
- Блокировка маркетинговых усилий Microsoft. Сюда я отношу боковую панель с Copilot, контент в новой вкладке, различные рекомендации и передачу данных.
- Переопределение корпоративных настроек в рабочей среде. Организации нередко форсируют содержимое новой вкладки и домашней страницы. Например, туда пропихивают корпоративный SharePoint, что тормозит каждое открытие новой вкладки.
Как настраивается
Я предпочитаю групповые политики Edge по ряду причин:
- быстрое массовое применение настроек
- наличие параметров, не доступных в графическом интерфейсе (например, первый запуск браузера)
- блокирование маркетинговых функций (если фича отключена, ее и продвигать не должны)
В организациях применяют шаблоны групповых политик, а на отдельных системах можно обойтись внесением изменений в реестр. Мне удобнее это делать скриптом PowerShell, поэтому формат именно такой. С тем же успехом сработает REG- или CMD-файл.
Скрипт и комментарии к нему
Перед запуском скрипта я настоятельно рекомендую изучить все параметры, чтобы не было неожиданных эффектов.
Скрипт
Скачайте скрипт edge-policy.zip, разблокируйте его, потом выполняйте от имени администратора.
<# .SYNOPSIS Configures Microsoft Edge using group policies. .DESCRIPTION The script configures Microsoft Edge by creating group policy settings in the registry. You can set the policies for all users or for the current user only. .PARAMETER scope Accepts HKLM (all users) or HKCU (current user, default behavior). .EXAMPLE PS> .\edge-policy.ps1 Applies the policy to the current user only. .EXAMPLE PS> .\context-menu.ps1 -scope HKLM Applies the policy to all users. .LINK Blog: https://www.outsidethebox.ms/22326 Documentation: https://learn.microsoft.com/en-us/DeployEdge/microsoft-edge-policies #> # # # # # # # # # # # # # # # # # # # # # параметр, задающий область применения политик param( [Parameter()] [string]$scope = 'HKCU' ) if ( ($scope -ne 'HKCU') -and ($scope -ne 'HKLM') ) { Write-Error 'Unacceptable scope. Use HKLM or HKCU.' -ErrorAction Stop } # # # # # # # # # # # # # # # # # # # # # создание раздела форсируемых политик, если его нет $path = "$($scope):SOFTWARE\Policies\Microsoft\Edge" New-Item -Path $(Split-Path $path -Parent) -Name $(Split-Path $path -Leaf) -ErrorAction SilentlyContinue | Out-Null # # # # # # # # # # # # # # # # # # # # # первый запуск браузера # отключить предложение первоначальной настройки персонализации New-ItemProperty -Path $path -Name HideFirstRunExperience -Type Dword -Value 1 -Force | Out-Null # запретить автоматический импорт данных из других браузеров New-ItemProperty -Path $path -Name AutoImportAtFirstRun -Type Dword -Value 4 -Force | Out-Null # запретить синхронизацию и предложение включить ее # New-ItemProperty -Path $path -Name SyncDisabled -Type Dword -Value 1 -Force | Out-Null # запретить вход в браузер и предложение войти (также отключает синхронизацию) New-ItemProperty -Path $path -Name BrowserSignin -Type Dword -Value 0 -Force | Out-Null # # # # # # # # # # # # # # # # # # # # # новая вкладка # удалить заданные адреса домашней страницы и новой вкладки # Remove-ItemProperty -Path $path -Name HomePageLocation -ErrorAction SilentlyContinue # Remove-ItemProperty -Path $path -Name NewTabPageLocation -ErrorAction SilentlyContinue # вид и содержимое новой вкладки New-ItemProperty -Path $path -Name NewTabPageContentEnabled -Type Dword -Value 0 -Force | Out-Null New-ItemProperty -Path $path -Name NewTabPageQuickLinksEnabled -Type Dword -Value 0 -Force | Out-Null New-ItemProperty -Path $path -Name NewTabPageHideDefaultTopSites -Type Dword -Value 1 -Force | Out-Null # NewTabPageAllowedBackgroundTypes: DisableImageOfTheDay = 1, DisableCustomImage = 2, DisableAll = 3 New-ItemProperty -Path $path -Name NewTabPageAllowedBackgroundTypes -Type Dword -Value 3 -Force | Out-Null # # # # # # # # # # # # # # # # # # # # # прочие раздражители # отключить кнопку бинг/копилот # https://t.me/sterkin_ru/1465 New-ItemProperty -Path $path -Name HubsSidebarEnabled -Type Dword -Value 0 -Force | Out-Null # отключить предложение персонализировать веб-серфинг # https://t.me/sterkin_ru/1473 New-ItemProperty -Path $path -Name PersonalizationReportingEnabled -Type Dword -Value 0 -Force | Out-Null # отключить переход в поисковик после ввода адреса сайта в адресную строку # https://t.me/sterkin_ru/1514 New-ItemProperty -Path $path -Name SearchSuggestEnabled -Type Dword -Value 0 -Force | Out-Null # отключить предложение восстановить страницы после неожиданного завершения работы # https://t.me/sterkin_ru/1421 # New-ItemProperty -Path $path -Name HideRestoreDialogEnabled -Type Dword -Value 1 -Force | Out-Null # отключить всякие рекомендации New-ItemProperty -Path $path -Name SpotlightExperiencesAndRecommendationsEnabled -Type Dword -Value 0 -Force | Out-Null New-ItemProperty -Path $path -Name ShowRecommendationsEnabled -Type Dword -Value 0 -Force | Out-Null # отключить визуальный поиск (оверлей на изображениях) New-ItemProperty -Path $path -Name VisualSearchEnabled -Type Dword -Value 0 -Force | Out-Null # отключить мини-меню при выделении текста New-ItemProperty -Path $path -Name QuickSearchShowMiniMenu -Type Dword -Value 0 -Force | Out-Null # # # # # # # # # # # # # # # # # # # # # применение настроек # завершить все процессы браузера у текущего пользователя Get-Process msedge -IncludeUserName -ErrorAction SilentlyContinue | where UserName -match $ENV:USERNAME | Stop-Process # обновить политики if ($scope -eq 'HKCU') { gpupdate /force /target:user } else { gpupdate /force /target:computer }
Комментарии к настройкам
Скрипт применяет политики только к тому пользователю, который выполняет его. Чтобы применить их ко всем пользователям, запускайте скрипт с параметром -scope HKLM
либо замените в коде дефолтное значение этого параметра. Разумеется, вы можете скомбинировать оба подхода, указав в скрипте две разные переменные для путей в реестре.
После выполнения скрипта первый запуск браузера (точнее — нового профиля) будет выглядеть примерно так:
Примерно — потому что некоторые параметры не задаются политиками Edge:
- Оформление браузера зависит от темной или светлой темы ОС, а точнее – от цвета приложений, который задается в Параметрах Windows.
- В новой вкладке локализация и отчасти содержимое зависят от выбранного на ней параметра «Регион и язык». При первом запуске он опирается на IP-адрес.
На картинке выше показан первый запуск браузера в системе с темной темой оформления и подключенном американском VPN, а ниже – запуск с настройками ОС по умолчанию и без VPN.
Прочие моменты:
- Ряд настроек я публиковал в канале Telegram. Поэтому их сопровождают ссылки на посты с дополнительными разъяснениями.
- Некоторые параметры закомментированы, потому что эти предпочтения слишком специфичны. Например, я отключаю предложение восстановить страницы после неожиданного завершения работы, а большинству это не подходит.
- В скрипте также демонстрируется (закомментировано) удаление уже заданных политик командлетом Remove-ItemProperty. Это реальный пример из рабочей среды, где политики форсируются в HKLM с помощью Intune. Поскольку у меня там есть права администратора, с помощью планировщика заданий я ежечасно без лишних окон удаляю корпоративные политики и задаю свои.
Ресурсы и документация
- Download Edge for Business – MSI и шаблоны политик
- Microsoft Edge Browser Policy Documentation – описания политик
- admx.help – веб-версия политик со значениями реестра
edge://policy
– страница политик браузера
P.S. Оптимизация скрипта
По мотивам отзыва на скрипт я добавил в архив альтернативную версию и рассказал об этом в канале Telegram.
Lecron
Спасибо. Не скажу, что рокет-сайнс, но полезно.
Есть замечание к организации скрипта. Слишком много New-ItemProperty -Path $path -Name … -Type Dword -Value … -Force | Out-Null. Замусоривает код. Затрудняет концентрацию на параметрах.
Позволит ли PS вынести параметры в список кортежей, а потом применить все в цикле? В стиле:
Vadim Sterkin
Спасибо за фидбэк! Примерно то же самое предложил первый же и единственный бета-тестер этого скрипта :)
Я сознательно не стал так оптимизировать. Я исхожу из предположения, что некоторые или даже многие пользователи будут применять отдельные твики. И они будут копипастить прямо с веб-страницы в консоль отдельные строки. Я сам так неоднократно делал :) В этом случае достаточно будет просто $path задать.
Lecron
Тогда написать функцию применения параметров. Ну или что-то иное, типа частичного применения или псевдонима. Чтобы пользователь мог вызывать:
Пользователям кроме задания $path, достаточно будет задать еще одну функцию. А дальше копипаста.
Vadim Sterkin
Ну вот он даже написал функцию, только почему-то в реестре ничего не прописалось :) И еще вы исходите из предположения, что начинающие пользователи PowerShell умеют работать с функциями.
В общем, этот скрипт изначально не про PowerShell, а про настройку браузера побыстрее. Так что если кто-то хочет для себя его оптимизировать или сделать более удобным — пожалуйста. Делайте и публикуйте хоть на GitHub, хоть на PasteBin, я сошлюсь.
P.S. Думаю, проще всего это сделать хэш-таблицей. Я напишу отдельно в канал Telegram про это, хоть вы и не читаете :)
Матвей Солодовников
Спасибо, Вадим, годный скрипт! На рабочих компьютерах, понятно, уже половина делается политиками (но всё равно добавил пару-тройку параметров, отключающих разные раздражители). На домашних же машинах зачастую забываешь настраивать, так как основной браузер — Vivaldi (но эдж время от времени использую).
Vadim Sterkin
Спасибо за отклик, Матвей! Рад что пригодилось. Да, конечно такой скрипт — абсолютно домашняя тема.