PowerShell:如何设置文化?

Min*_*ờng 7 powershell

我尝试过Set-Culture -CultureInfo vi-VN,但 Powershell 并未更改为我设置的文化。

我通过打开Powershell ISE进行测试,看到我设置的文化已成功更改。

如何使用 Powershell 更改我设定的文化?

mkl*_*nt0 6

假设您已经开始一个新会话(见下文):

您可能遇到了Windows PowerShell bug,从 v5.1.18362.628 开始出现):

更改为区域性vi-VNVietnamese (Vietnam)、 LCID 1066),特别是[1],似乎在控制台窗口[2]的Windows PowerShell (v5.1-)中不起作用(而正如您所说,它在过时的PowerShell ISE中起作用

注意:更改通常会对当前用户帐户生效,但在 Windows PowerShell 控制台窗口中不会生效

PowerShell [Core] 6+不受影响


至于潜在的修复:Windows PowerShell 不再处于积极开发阶段,因此仅实施关键修复。您可以在相关UserVoice 论坛中报告 Windows PowerShell 错误。


一般来说

  • Set-Culture在整个系统范围内持续改变当前用户的文化。

    • 这仅在未来的PowerShell 会话(进程)中生效,因此您必须打开一个新的PowerShell 控制台窗口,例如,更改才能生效。
      截至撰写本文时,Set-Culture 帮助主题并未提及此要求;修复此 GitHub 问题中建议的问题。

      • 不过,任务栏的通知区域会立即在日期和时间显示中反映出新的文化,注意这一点原则上会提供关于调用是否成功的即时反馈;例如,如果您运行Set-Culture fr-FR(法语),日期和时间将更改为类似以下内容(“jeudi”是法语,表示星期四):

        • 任务栏日期/时间以法语显示
      • 要开始新会话,请执行以下操作之一:

        • 打开新的 PowerShell 控制台窗口。
        • Windows Terminal中,打开一个新的 PowerShell 选项卡。
        • 在安装了PowerShell 扩展Visual Studio Code中,如下所示终止 PowerShell 集成控制台,并选择在出现提示时重新启动它(或者,在集成终端中启动新的常规(非集成)PowerShell 实例)。

          • 带有删除按钮的集成终端工具栏
        • 在 -过时的- ISE 中,打开一个新的 PowerShell 选项卡 ( File > New PowerShell TabCtrl-T)。

    • 当更改处于挂起状态时,即在开始新会话之前Get-Culture,报告仍然有效(旧)的值,而不是挂起的值。

  • 您需要将预定义的特定区域性的名称作为(隐含的)-CultureInfo参数传递。

    • 特定文化有一个名称例如fr-FR,其中fr指定语言(法语)和FR位置(地区或国家);相比之下,诸如 之类的纯语言文化名称不受支持并被悄悄忽略fr

    • 获取预定义的特定区域性列表,请运行以下命令,或者,仅对于 Windows,请参阅此文档

      • [cultureinfo]::GetCultures('SpecificCultures')

[1] 不确定其他文化是否也受到影响。

[2] 在Windows 终端中运行也没有帮助。这表明该错误存在于ConsoleHost运行基于控制台的 PowerShell 会话的 PowerShell 主机内部(而 ISE 实现其自己的主机Windows PowerShell ISE Host),如 中所反映的$HOST