Как использовать Powershell для настройки параметров «Регион и язык» в win7 или win2008 - PullRequest
4 голосов
/ 16 марта 2012

Я новичок в Powershell, и я искал в Интернете целый день, но все еще не могу узнать, как настроить параметры «Регион и язык» с помощью Powershell в win7 или win2008.

Я хочу изменить следующие параметры в Powershell:

  1. Текущий язык системы

  2. Короткая дата и длинный формат даты

  3. Формат короткого и длительного времени

  4. Текущее местоположение

Кто-нибудь знает, как это сделать с помощью Powershell? Решения Cmd / Bat / .NET также приветствуются!

Ответы [ 3 ]

6 голосов
/ 03 декабря 2015

Я знаю, что ваш вопрос был о Windows 7;эта информация может быть полезна для тех, кто работает с более новыми версиями.Set-WinUserLanguageList, New-WinUserLanguageList и Get-WinUserLanguageList в Windows 8 и выше позволяют контролировать установленные языки.Например, чтобы добавить язык:

$list = Get-WinUserLanguageList
$list.Add("fr-FR")
Set-WinUserLanguageList $list

Set-Culture в PowerShell 3 позволяет изменить культуру, например, выбрать значения по умолчанию для Германии:

Set-Culture de-DE

Или, чтобы установить пользовательские форматы:

$culture = Get-Culture
$culture.DateTimeFormat.ShortDatePattern = 'yyyy-MM-dd'
$culture.DateTimeFormat.LongDatePattern = 'dddd, d MMMM yyyy'
$culture.DateTimeFormat.ShortTimePattern = 'h:mm tt'
$culture.DateTimeFormat.LongTimePattern = 'h:mm:ss tt'
Set-Culture $culture

Чтобы изменить местоположение, используйте Set-WinHomeLocation, например, чтобы установить местоположение пользователя в Австрии:

Set-WinHomeLocation -GeoId 14

В MSDN есть список GeoIds , а в TechNet есть ссылка на командлеты международных настроек .

3 голосов
/ 04 февраля 2014

@ bourne приведет меня к

& $env:SystemRoot\System32\control.exe "intl.cpl,,/f:`"c:\setKeyboardUK.xml`""

Обратите внимание на отсутствие пробела между символами ,, и / f, использование кавычек вокруг всего объекта и обратный тик, чтобы избежать кавычек вокруг пути(это необходимо).

Это мой файл setKeyboardUK.xml

<gs:GlobalizationServices xmlns:gs="urn:longhornGlobalizationUnattend"> 
<!--User List-->
<gs:UserList>
    <gs:User UserID="Current" CopySettingsToDefaultUserAcct="true" CopySettingsToSystemAcct="true"/> 
</gs:UserList>
<gs:UserLocale> 
    <gs:Locale Name="en-GB" SetAsCurrent="true"/> 
</gs:UserLocale>
<!--location--> 
<gs:LocationPreferences> 
    <gs:GeoID Value="242"/> 
</gs:LocationPreferences>
<gs:InputPreferences>
    <!--en-GB--> 
    <gs:InputLanguageID Action="add" ID="0809:00000809" Default="true"/> 
</gs:InputPreferences>

Чтобы проверить, применяются ли настройки (поскольку ошибки молчат), откройте Event Viewer.и «Журналы приложений и служб», затем «Microsoft», «International», «Operational», здесь регистрируются все успешные изменения или сбои (ведение журнала включено по умолчанию).

FYI Я сделал все это на Powershell 3на Windows 2008 R2 64bit.YMMV

1 голос
/ 01 октября 2012

Эй, я знаю, что это довольно старо, но я должен был сделать то же самое, но я сделал это в пакетном сценарии.Сейчас я пытаюсь выяснить, как это сделать в powershell.

Ознакомьтесь с моим постом здесь - https://superuser.com/questions/353752/windows-7-change-region-and-language-settings-using-a-script

То же самое должно применяться в Powershell с помощью следующей команды:

PS C:\> & $env:SystemRoot\System32\control.exe "intl.cpl,, /f:path\to\xml\file\change_system_region_to_US.xml"

Однако для меня это не работает по какой-то причине, хотя команда выполняется без ошибок, изменения фактически не вступают в силу.

Если вы запускаете ту же команду из стандартногоОкно CMD, изменения вступают в силу немедленно.И если вы удаляете котировки так, чтобы они работали в окне CMD, вы получаете следующую ошибку:

PS C:\> & $env:SystemRoot\System32\control.exe intl.cpl,, /f:"path\to\xml\file\change_system_region_to_US.xml"
    Missing argument in parameter list.
    At line:1 char:50
    + & $env:SystemRoot\System32\control.exe intl.cpl,, <<<<  /f:"path\to\xml\file\change_system_region_to_US.xml"
        + CategoryInfo          : InvalidOperation: (,:String) [], RuntimeException
        + FullyQualifiedErrorId : MissingArgument

Похоже, что Powershell не очень нравится запятая.

Делать это в файле .bat, хотя работает как шарм.Просто убедитесь, что вы правильно указали коды своей страны.Возможно, потребуется немного поработать, чтобы получить XML-файл для изменения нужных параметров.

...