gpt4 book ai didi

powershell - PowerShell UICulture与Windows设置

转载 作者:行者123 更新时间:2023-12-03 00:56:21 26 4
gpt4 key购买 nike

在Win 10下修改PS 5.1期间,该问题与Fully change language (including Culture) for the current PowerShell session问题有关,
我遇到了两个相关的问题。

  • Windows设置与UICulture关联在哪里?
    我没有找到here所示的“区域和语言”控制面板的“键盘和语言”选项卡。
  • 可以在PS内部永久更改吗?
    到目前为止,我发现的所有内容都只保留一个 session 。

  • 设置->时间和语言->语言-> Windows显示语言显示“Español(España)”,PS给出
    > Get-UICulture ; [System.Threading.Thread]::CurrentThread.CurrentUICulture ; [CultureInfo]::CurrentUICulture ;
    LCID Name DisplayName
    ---- ---- -----------
    1033 en-US English (United States)
    1033 en-US English (United States)
    1033 en-US English (United States)
    没有任何干预性更改,并且在刚刚启动的 session 中。

    最佳答案

    .NET 中,文化( System.Globalization.CultureInfo )用于控制(人类)特定于文化的展示形式的两个相关但独立的方面:

  • 反射(reflect)在 [cultureinfo]::CurrentUICulture 中的有效的UI文化控制着应用于 UI元素和最终用户消息(例如错误消息)的(人类)语言
  • 在Windows上,其值继承自所谓的 Windows显示语言,这是一种持久性,用户特定的设置,您可以按如下所述进行修改。
  • 在PowerShell中,您还可以通过自动 $PSUICulture 变量(仅报告区域性名称)或 Get-UICulture cmdlet(报告[cultureinfo]实例)来查询有效的UI文化。
    警告:在Windows PowerShell中,报告的值是在 session 启动时生效的值(该值是当时的当前持久值),因此不会反射(reflect)任何 session 中的更改。在PowerShell [Core] v6 +中,此问题已得到纠正。

  • 反射(reflect)在 [cultureinfo]::CurrentCulture 中的有效区域性用于控制用于表示数字,货币值和日期/时间值的格式。
  • 在Windows上,其值继承自 Activity 的语言环境,又称为区域格式,它们是持久性的,用户特定的设置,您可以按以下说明进行修改。
  • 在PowerShell中,您还可以通过自动 $PSCulture 变量(仅报告区域性名称) Get-Culture cmdlet(报告[cultureinfo]实例)来查询有效的UI文化。
    警告:在Windows PowerShell中,报告的值是在 session 启动时生效的值,因此不会反射(reflect)任何 session 中的更改。在PowerShell [Core] v6 +中,此问题已得到纠正。


  • 切换到其他文化:
    对于当前用户,交互式(GUI)方法始终是持久性的:
  • 用户界面文化,又称Windows显示语言:
  • 在Windows 10上,打开设置应用程序(例如,通过“开始”菜单),转到Time & Language类别,然后单击左侧边栏中的Language
  • 快捷方式:
  • 快速打开“设置”应用程序:
  • 使用键盘快捷键WinKey-i。
  • 运行start ms-settings:(也可以从cmd运行)。

  • 在“开始”菜单中,只需键入“语言”,然后从结果中选择Language Settings-这将使您直接进入“设置”应用程序中的相关页面。
  • 运行intl.cpl以打开旧版Region控制面板小程序,然后单击Language preferences链接,该链接将带您到“设置”应用程序中的相关页面。



  • 文化,又称区域格式(语言环境):
  • 在Windows 10上,打开设置应用程序(例如,通过“开始”菜单),转到Time & Language类别,然后单击左侧边栏中的Region,然后在Regional format下选择所需的区域性(顶部的Region设置会无法控制文化)。
  • 快捷方式:
  • 在“开始”菜单中,只需键入“区域格式”,然后从结果中选择Set regional format-这将使您直接进入“设置”应用程序中的相关页面。
  • 运行intl.cpl以打开旧版Region控制面板小程序,然后从Format:下拉列表中选择所需的区域性。




  • 注意:
    这些设置适用于.NET和非.NET应用程序,即,假定这些应用程序被设计为尊重用户的区域格式(语言环境,区域性)和显示语言(UI文化),并附带特定于语言的资源。
    相比之下,通过[cultureinfo]::CurrentUICulture / [cultureinfo]::CurrentCulture进行仅 session 中的更改(请参见下文)仅适用于.NET应用程序。
    编程方法:
  • 持久,当前用户更改(相当于GUI方法):
  • 用户界面文化,又称Windows显示语言:
  • 没有Set-UICulture cmdlet,但是在Windows 8 / Windows Server 2012 R2及更高版本中,您可以使用
    Set-WinUILanguageOverride cmdlet。
    请注意,与目标区域性相关联的语言的语言包必须随系统一起提供,或者必须已预先下载。
  • 重要:更改必须直到注销并重新启动或重新启动才生效。

  • 文化,又称区域格式(语言环境):
  • 使用 Set-Culture cmdlet,在Windows 8 / Windows Server 2012 R2及更高版本中可用。
  • 重要:更改仅在以后的PowerShell session 中生效,但无需注销/重新启动。


  • 仅 session 中的更改:
  • 重要:这种更改仅适用于基于.NET的应用程序。因此,从更改了区域性的PowerShell session 中调用非.NET控制台应用程序不会对该控制台应用程序产生影响。但是,所做的更改确实对调用PowerShell cmdlet,脚本和函数生效。即使更改的范围从技术上来说仅限于当前线程,PowerShell也会通过PowerShell远程处理(例如Start-ThreadJob)将更改传播到新线程中执行的代码(ForEach-Object -ParallelInvoke-Command)以及在远程计算机上执行的代码。但是奇怪的是,从PowerShell 7.0开始,在子进程中运行的后台作业(Start-Job)不会继承调用线程的区域性-请参见this GitHub issue
  • 您可以分配给[cultureinfo]::CurrentUICulture / [cultureinfo]::CurrentCulture来更改当前线程的UI文化/文化(仅非持久);例如,以下命令使用法国文化输出当前日期和时间:
  • [cultureinfo]::CurrentCulture = 'fr-FR'; Get-Date

  • 警告:由于Windows PowerShell中的错误,在每个交互式提交的命令之后,[cultureinfo]::CurrentUICulture[cultureinfo]::CurrentCulture意外地重置为 session 启动值。此问题已在PowerShell [Core] v6 +中修复-请参见this answer
  • 结果是,如果您要运行与永久配置的不同文化的整个PowerShell session ,则可以将分配给[cultureinfo]::CurrentUICulture[cultureinfo]::CurrentCulture的工作分配到PowerShell [Core] v6 + 中的$PROFILE文件中,但是您需要 Windows PowerShell的解决方法-请参阅this answer
  • 警告:Windows PowerShell静态地初始化 $PSUICulture$PSCulture ,因此这些变量不能反射(reflect)解决方法设置的有效区域性(依赖于修改非公共(public)字段);但是,Get-UICulture / Get-Culture以及[cultureinfo]::CurrentUICulture / [cultureinfo]::CurrentCulture都可以。


  • 关于powershell - PowerShell UICulture与Windows设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62909619/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com