Содержание
Цель упражнения — полностью локализовать установленную Windows на русский язык для текущего пользователя и всех созданных впоследствии аккаунтов.
Я не призываю переводить английскую ОС с ног до головы на русский язык. Тогда уж проще взять русский дистрибутив. Я показываю тонкости работы языковых командлетов. А вам нужно отталкиваться от практической задачи, выбирая только необходимые составляющие локализации.
В качестве подопытной системы используется английская Windows 11 23H2. ОС установлена с настройками по умолчанию, и никакие языковые параметры не менялись. Если у вас другой язык дистрибутива или добавлены языки, учитывайте это при управлении списком языков. В остальном разницы нет.
Для успеха необходимо подключение к интернету, потому что языковой пакет скачивается с серверов Microsoft. (Добавление языковых пакетов в автономный образ пошагово описано в официальной документации.)
[+] Сегодня в программе
Install-Language
В Windows 11 добавили новый модуль LanguagePackManagement, а затем портировали его в Windows 10. Командлет Install-Language входит в состав этого модуля.
Пример добавления русского языка в английскую систему:
Install-Language ru-RU Language Language Packs Language Features -------- -------------- ----------------- ru-RU LpCab BasicTyping, Handwriting, TextToSpeech, OCR
Название и описание командлета несколько вводят в заблуждение относительно графического интерфейса. На самом деле добавляется не язык, а языковой пакет и сопутствующие компоненты — рукописный ввод, OCR и т.д.
Добавленный командлетом язык не активируется автоматически!
Он появляется лишь в списке языков интерфейса, потому что установили языковой пакет. Однако новый язык не добавляется в список предпочитаемых и следовательно недоступен в качестве языка ввода.

# Добавить русский язык в список предпочитаемых
# Как следствие добавляется русский метод ввода
# https://www.outsidethebox.ms/20484/#_Toc501
$List = Get-WinUserLanguageList
$List.Add("ru-RU")
Set-WinUserLanguageList $List -Force
Get-WinUserLanguageListСледующий фрагмент делает то же самое, а также ставит русский на первое место в списке предпочитаемых языков. Плюс командлет Set-WinUILanguageOverride назначает язык интерфейса. Для вступления изменений в силу требуется завершить сеанс.
# Добавить русский язык в список предпочитаемых
# Как следствие добавляется русский метод ввода
$List = Get-WinUserLanguageList
$List.Add("ru-RU")
# Сделать русский язык первым в списке предпочитаемых
# https://www.outsidethebox.ms/19024/#lang
Set-WinUserLanguageList $($list[1], $list[0]) -Force
Get-WinUserLanguageList
# Задать русский язык в качестве языка интерфейса
Set-WinUILanguageOverride ru-RUПри использовании Install-Language можно избежать установки дополнительных компонентов параметром -ExcludeFeatures. Однако он блокирует все компоненты сразу, а тонкой настройки не предусмотрено. Это решается с помощью командлетов для управления компонентами по требованию. Ниже пример получения сведений о компонентах и удаления OCR после установки языка посредством Install-Language.
# Состояние русских языковых компонентов после установки русского языка
Get-WindowsCapability -Online | Where-Object {$_.Name -like '*lang*ru-RU*'}
Name : Language.Basic~~~ru-RU~0.0.1.0
State : Installed
Name : Language.Handwriting~~~ru-RU~0.0.1.0
State : Installed
Name : Language.OCR~~~ru-RU~0.0.1.0
State : Installed
Name : Language.TextToSpeech~~~ru-RU~0.0.1.0
State : Installed
# Удаление компонентa OCR
Remove-WindowsCapability -Name "Language.OCR~~~ru-RU~0.0.1.0" -Online Кроме того, у командлета есть параметр -CopyToSettings. Добавляя язык, можно установить его в качестве языка для неюникодных программ, а также языком интерфейса, ввода и форматов на экране приветствия и в настройки всех новых учетных записей.

Однако обратите внимание, что метод ввода и форматы у новых аккаунтов остались английскими. При том что на экране приветствия все соответствует описанию. Добавление языка до запуска Install-Language ничего не изменило. Что ж, мы пойдем другим путем, чуть ниже.
Uninstall-Language
Для удаления языка в том же модуле LanguagePackManagement предусмотрен командлет Uninstall-Language. У него свои нюансы.
- Удаление языкового пакета и дополнительных компонентов выполняется асинхронно — в фоне и не моментально, а вступает в силу после перезагрузки.
- Языковой пакет не удалится, если его язык задан для интерфейса ОС. Допустим у вас выбран русский язык. Тогда удалятся только языковые компоненты, а языковой пакет останется. Поэтому сначала следует явно переопределить язык интерфейса командлетом Set-WinUILanguageOverride.
Set-WinUILanguageOverride en-US Uninstall-Language ru-RU
- Удаление не затрагивает язык и метод ввода, добавленные вручную или командлетом Get-WinUserLanguageList.
Copy-UserInternationalSettingsToSystem
В этом примере языковые параметры копируются всюду:
Copy-UserInternationalSettingsToSystem -WelcomeScreen $True -NewUser $True
Здесь тонкостей поменьше.
- У Install-Language регион почему-то исключен из копирования. А здесь копируется полный набор параметров. Кстати,
GeoIDфигурирует в блоге в контексте блокировки Office 365 в РФ и РБ. - Копирование языка на экран входа определяет не только язык интерфейса там, но и дефолтную раскладку для ввода пароля. Ее можно задать командлетом Set-WinDefaultInputMethodOverride везде, в том числе на экране входа:
Set-WinDefaultInputMethodOverride -InputTip "0409:00000409" #en-US
Тонкой же настройке я посвятил статью: Как грамотно настроить язык ввода на экране входа в Windows.
- Наконец, командлет доступен только в Windows 11. Его не портировали ни в Windows 10, ни в Windows Server 2022.
Скрипт для полной локализации ОС
Помимо рассмотренных выше командлетов в скрипт вошли также:
- Set-WinHomeLocation — задает регион
- Set-WinSystemLocale — указывает кодовую страницу
- Set-WinDefaultInputMethodOverride (необязательно) — переопределяет метод ввода по умолчанию, на случай если вы при полной локализации все-таки предпочитаете дефолтную английскую раскладку
- устанавливает русский язык со всеми компонентами
- добавляет русский язык в список языков и методов ввода
- ставит русский на первое место в списке предпочитаемых (при условии, что он на втором из двух)
- задает русский в качестве языка интерфейса
- задает регион РФ
- копирует вышеперечисленные языковые настройки на экран приветствия и в новые учетные записи
- задает русскую кодовую страницу
# Полная локализация Windows: https://www.outsidethebox.ms/22149/
Install-Language ru-RU
Set-WinUILanguageOverride ru-RU
$List = Get-WinUserLanguageList
$List.Add("ru-RU")
Set-WinUserLanguageList $($list[1], $list[0]) -Force
Set-WinHomeLocation -GeoId 203 # https://go.microsoft.com/fwlink/?LinkID=242308
Set-WinSystemLocale ru-RU
Copy-UserInternationalSettingsToSystem -WelcomeScreen $True -NewUser $True
# Бонус: переопределить дефолтный метод ввода на английский
# Set-WinDefaultInputMethodOverride -InputTip "0409:00000409"
Заключение
Новые командлеты навели два недостающих мостика к локализации всех компонентов установленной системы. Конечно, с непривычки трудно ориентироваться в разнообразии языковых командлетов. Но фактически разработчики стараются делать отдельный командлет для каждой настройки в графическом интерфейсе. Зная это, проще находить подходящий командлет для решения конкретной задачи.
Как создать сценарий PowerShell
Если вы хотите создать сценарий просто вставив перечень команд из другого источника, можете воспользоваться блокнотом.
Для разработки сценариев луче использовать среду «Windows PowerShell ISE».
С помощью блокнота
Напишите или вставьте в блокнот необходимые команды
Выберите путь сохранения файла
Укажите название файла
Измените расширение файла с «txt» на «ps1»
Нажмите на кнопку «Сохранить» (Save)
Закройте окно блокнота
С помощью “Windows PowerShell ISE”
Напишите или вставьте в «Windows PowerShell ISE» необходимые команды
Выберите путь сохранения файла
Укажите название файла или оставьте имя по умолчанию
Нажмите на кнопку «Сохранить» (Save)
Закройте среду «Windows PowerShell ISE»
PowerShell
Информация в данном разделе актуальна для:
Windows 10: 1607, 1809, 21H2.
Windows 11: 21H2
PowerShell – расширяемое средство автоматизации от Microsoft с открытым исходным кодом.
Входит в состав операционной системы начиная с Windows 10
Windows PowerShell (ISE) – среда для создания, выполнения и тестирования скриптов PowerShell.
Входит в состав в состав операционной системы начиная с Windows 10.
Официальная документация
powershell.txt
· Последние изменения: 2023/09/15 15:12 —
vladimir
Как запустить “Windows PowerShell ISE”
С помощью графической оболочки
В строке поиска наберите «ise»
В результатах поиска найдите «Windows PowerShell ISE»
Возможно два варианта запуска, с обычными и повышенными привилегиями
С обычными привилегиями – нажмите на вышеуказанный пункт левой кнопкой мыши
С помощью команды
Введите команду «powershell_ise» без кавычек
Как запустить оболочку PowerShell
Для Windows 10 – «Windows PowerShell»
Для Windows 11 – «Windows Terminal»
При необходимости запустить PowerShell с повышенными привилегиями выберите пункт:
Для Windows 10 1607
Способ №1
В строке поиска наберите «power»
В результатах поиска выберите пункт «Windows PowerShell»
Способ №2
Как выполнить сценарий PowerShell
Способ №1
Нажмите правой кнопкой мыши на необходимом сценарии
Выберите пункт «Выполнить с помощью PowerShell» (Run with PowerShell)
Способ №2
Нажмите правой кнопкой мыши на необходимом сценарии
Выберите пункт «Изменить» (Edit)
Дождитесь запуска среды «Windows PowerShell ISE»
Убедитесь, что на панели инструментов «Windows PowerShell ISE» активна зеленая стрелка
Нажмите «F5» или нажмите левой кнопкой мыши на зелёную стрелку.
Способ №3
Нажмите Ctrl+O для открытия сценария, который необходимо выполнить
Найдите место расположения сценария и откройте его двойным щелчком левой кнопки мыши
При выполнении сценария система может сообщить о том, что выполнение сценариев запрещено.
Чтобы снять ограничение на выполнение сценариев PowerShell, выполните нижеуказанную команду в командной части
запущенной среды PowerShell ISE или в среде PowerShell
Set-Executionpolicy -Scope CurrentUser -ExecutionPolicy UnRestricted




