gpt4 book ai didi

powershell - 更改 Powershell session 的当前文化,特定于 v3.0+

转载 作者:行者123 更新时间:2023-12-04 21:12:48 25 4
gpt4 key购买 nike

我想改变当前交互式 Powershell session 中接受的数据和错误的文化。我知道这个问题 powershell : changing the culture of current session和这个问题 Changing current culture在 super 用户上。主要问题是它不适用于 Powershell 3.0 和 4.0。

PS C:\users\me\Documents> [system.threading.thread]::currentthread.currentculture

LCID Name DisplayName
---- ---- -----------
1049 ru-RU Русский (Россия)


PS C:\users\me\Documents> [system.threading.thread]::currentthread.currentculture=[system.globalization.cultureinfo]"en-US"
PS C:\users\me\Documents> [system.threading.thread]::currentthread.currentculture

LCID Name DisplayName
---- ---- -----------
1049 ru-RU Русский (Россия)

UI 文化也不接受新设置。 Set-Culture无论我是否使用管理员访问权限,总的来说都不起作用 - 无论如何,它不应受此影响,因为效果仅适用于单个进程。 Using-Culture 来自 MSDN Powershell 博客,由 SO 社区改编,有效,但仅部分有效,例如,在当前的“ru-RU”文化中,我能够从“6/19/15 2:26:02 PM”字符串中获得正确的日期,通过 Using-Culture "en-US" {get-date -date "6/19/15 2:26:02 PM"} 在“en-US”文化中,但不可能收到其他语言的错误:比如 Using-Culture "en-US" {$null.test='1'}导致俄语区域设置错误,就好像文化没有改变一样。

此行为已在我安装了 Powershell 4.0 的本地 Win7 Professional 工作站和安装了 Powershell 3.0 的 Windows Server 2012 上进行了测试,这是解析错误本地化日期字符串所必需的。后者具有“en-US”的 UI 文化和系统区域设置“ru-RU”。

那么,PS3 及更高版本是否仍然可以改变 Powershell session 的文化,如果是,如何改变? (或者是再次出现错误,还是我不知道的 PS3 更改?)

最佳答案

改变文化只影响线程并且只适用于该进程。
您的 PS 窗口在当前语言环境下启动,因此线程具有该语言环境。在当前系统语言环境下启动的 PS 窗口中键入“[System.Threading.Thread]::CurrentThread.CurrentCulture”,将始终显示该语言环境。

如果您在 ISE 中运行它,它应该解释一下:

 function Set-Culture([System.Globalization.CultureInfo] $culture) {
[System.Threading.Thread]::CurrentThread.CurrentUICulture = $culture
[System.Threading.Thread]::CurrentThread.CurrentCulture = $culture }

Set-Culture en-US
[system.threading.thread]::currentthread.currentculture
Pause

或者,在 PS 窗口中:
function Set-Culture([System.Globalization.CultureInfo] $culture) { [System.Threading.Thread]::CurrentThread.CurrentUICulture = $culture ; [System.Threading.Thread]::CurrentThread.CurrentCulture = $culture } ; Set-Culture en-US ; [system.threading.thread]::currentthread.currentculture

它工作正常。

如果您想要一个具有新文化的 PS 窗口,您需要使用该文化启动它,而不是在之后尝试更改它。

关于powershell - 更改 Powershell session 的当前文化,特定于 v3.0+,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30937019/

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