我是Powershell的新手,我已经在互联网上搜索了一整天,但仍然无法在win7或win2008中使用Powershell找到如何自定义“区域和语言”设置。
我想在Powershell中更改以下设置:
当前系统区域设置
短日期和长日期格式
短时间和长时间格式
当前位置
有人知道如何使用Powershell吗? Cmd / Bat / .NET解决方案也欢迎!
先谢谢!
答案 0 :(得分:6)
我知道你的问题是关于Windows 7的;此信息可能对现在运行较新版本的用户有所帮助。 Windows 8及更高版本中的Set-WinUserLanguageList
,New-WinUserLanguageList
和Get-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文件以更改所需的参数。