我需要跨各种操作系统运行一些PowerShell脚本.其中大多数都是英文版,但有些是本地化的,例如德语,法语,西班牙语等.问题是本地系统管理员现在大部分时间都没有PowerShell,如果脚本失败并向他们抛出错误,而不是读它,他们只是发送这样的错误信息的截图给我,如果这个错误的原因不明显,我很难打字到g.翻译以找出正在发生的事情.
是否有一个开关我可以运行整个脚本或单个命令或参数或任何其他方式强制PowerShell中的错误以英语显示而不是该特定机器的默认语言?
我想改变当前交互式 Powershell 会话中接受的数据和错误的文化。我知道这个问题powershell:改变当前会话的文化和这个问题改变SuperUser 上的当前文化。主要问题是它不适用于 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 ??????? (??????)
Run Code Online (Sandbox Code Playgroud)
UI 文化也不接受新设置。Set-Culture
无论我是否使用管理员访问权限,总的来说都不起作用 - 无论如何,它不应受此影响,因为效果仅适用于单个进程。在Using-Culture
从MSDN博客Powershell的,适于通过SO社会的作品,但只是部分,例如,以“RU-RU”当前文化我能够从“15年6月19日下午2时26分02秒”获得合适的日期字符串,它通过 位于“en-US”区域性中Using-Culture "en-US" {get-date -date "6/19/15 2:26:02 PM"}
,但不可能收到另一种语言的错误:sayUsing-Culture "en-US" {$null.test='1'}
导致俄语区域设置错误,就好像区域性没有改变一样。
此行为已在我安装了 Powershell 4.0 的本地 Win7 Professional 工作站和安装了 Powershell 3.0 的 Windows Server 2012 上进行了测试,这是解析错误本地化日期字符串所必需的。后者具有“en-US”的 UI 文化和系统区域设置“ru-RU”。 …