我可以使用Set-Culture
(Powershell作为管理员)将当前文化设置为"en-DE"
,即英语(德国)。但是,当我运行不同的PS命令来查看当前文化时,我仍然得到en-US
。我也检查了我的区域(格式)和位置。
我是否还必须将系统区域设置更改为德国(德语)?
这导致应用程序出错,因为日期时间格式与en-DE到en-US不同,导致日期读取错误。
当我Set-Culture
到de-DE
时,一切似乎都在运转。
我确保以管理员身份运行Powershell控制台,Set-Culture
,关闭控制台。打开Powershell并运行Get-Culture
,[CultureInfo]::CurrentCulture
,[CultureInfo]::CurrentUICulture
以及更多内容以检查并仍然获得en-US
答案 0 :(得分:3)
注意:使用en-DE
作为区域性标识符 - 即将语言 en
(英文)与通常不相关的区域混合/ country DE
(德国) - 要求 Windows 10,发布渠道1607
或更高版本或 Windows Server 2016 ,{{3 }}。
然而,错误 阻止使用此类混合文化,在Windows 10 Pro上观察到(64位;版本1709,操作系统版本:16299.371 )
虽然您可以使用Set-Culture
成功设置此类混合文化值,但后续会话无法识别并退回en-US
(反映在$PSCulture
,Get-Culture
和[cultureinfo]::currentCulture
)
Set-Culture
)。本答案的其余部分讨论了如何持续设置当前用户的文化,而不管错误。
Set-Culture
- 通过注册表 - 为 future PowerShell会话(仅限)设置文化,而不是(也) 当前会话。
Get-Culture
只会在会话启动时报告当前会话的文化 即可。也就是说,如果您在会话期间更改文化(请参阅下文),则 将反映在Get-Culture
中。
为了还将新设置的文化应用于当前会话,除了 Set-Culture
之外,还要运行以下拨打:
[cultureinfo]::CurrentCulture = 'de-DE'
警告重新交互式(命令行)使用:
[cultureinfo]::CurrentCulture = 'de-DE'; Get-Date
按预期工作,因为它是同一命令行的一部分,但当仅执行Get-Date
作为 next 命令时,当前文化已恢复为当前文化当前会话启动时间。
可能令人惊讶的不对称 - Set-Culture
仅适用于未来会话,但Get-Culture
报告当前会话& #39; s(创业)文化 - 是problem has been reported on UserVoice。