如何使用Powershell定制"地区和语言" win7或win2008中的设置

时间:2012-03-16 11:45:45

标签: .net windows-7 powershell command-line windows-server-2008-r2

我是Powershell的新手,我已经在互联网上搜索了一整天,但仍然无法在win7或win2008中使用Powershell找到如何自定义“区域和语言”设置。

我想在Powershell中更改以下设置:

  1. 当前系统区域设置

  2. 短日期和长日期格式

  3. 短时间和长时间格式

  4. 当前位置

  5. 有人知道如何使用Powershell吗? Cmd / Bat / .NET解决方案也欢迎!

    先谢谢!

3 个答案:

答案 0 :(得分:6)

我知道你的问题是关于Windows 7的;此信息可能对现在运行较新版本的用户有所帮助。 Windows 8及更高版本中的Set-WinUserLanguageListNew-WinUserLanguageListGet-WinUserLanguageList可让您控制已安装的语言。例如,添加语言:

$list = Get-WinUserLanguageList
$list.Add("fr-FR")
Set-WinUserLanguageList $list
PowerShell 3中的

Set-Culture可让您更改文化,例如选择德国的默认值:

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有list of GeoIds,TechNet有international settings cmdlets的参考。

答案 1 :(得分:3)

@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>

要检查是否应用了设置(因为失败是静默的)打开事件查看器和“应用程序和服务日志”,然后“Microsoft”,“国际”,“可操作”,此处记录任何成功的更改或失败(日志记录为默认启用)。

仅供参考我在Windows 2008 R2 64bit上的Powershell 3上完成了所有这些工作。 YMMV

答案 2 :(得分:1)

嘿,我知道这有点旧,但我必须这样做,但我是在批处理脚本中完成的。 我现在正试图弄清楚如何在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文件以更改所需的参数。