问题 在本地化系统上强制使用英语输出PowerShell错误


我需要跨各种操作系统运行一些PowerShell脚本。其中大部分都是英文版,但有些是本地化的,例如德语,法语,西班牙语等。问题是本地系统管理员现在大部分时间都不是PowerShell,如果脚本失败并向他们抛出错误,而不是阅读它,他们只是发送这样的错误消息的截图给我,如果这个错误的原因不明显,我很难打字到g。翻译以了解发生了什么。

是否有一个开关我可以运行整个脚本或单个命令或参数或任何其他方式强制PowerShell中的错误以英语显示而不是该特定机器的默认语言?


7874
2017-11-08 22:25


起源



答案:


您可以像这样更改管道线程的CurrrentUICulture:

[Threading.Thread]::CurrentThread.CurrentUICulture = 'fr-FR'; Get-Help Get-Process

我在使用英语系统,但在执行上述行之前,我更新了这样的帮助:

Update-Help -UICulture fr-FR

有了这个,上面的Get-Help电话给了我法语帮助我的英语系统。注意:如果我在新行上调用Get-Help,则不起作用。确认PowerShell在每个管道开始之前重置CurrentUICulture,这就是当命令在同一管道中时它工作的原因。

在您的情况下,您需要让人们使用以下方式安装英语帮助:

Update-Help -UICulture en-US

然后像这样执行你的脚本:

[Threading.Thread]::CurrentThread.CurrentUICulture = 'en-US'; .\myscript.ps1

12
2017-11-08 23:49



$ENUS="[Threading.Thread]::CurrentThread.CurrentUICulture = 'en-US'" 然后 invoke-expression $ENUS; Get-Help Get-Process  “invoke-expression $ ENUS;” 如果您需要运行许多命令,则会更短。 - anton_rh


答案:


您可以像这样更改管道线程的CurrrentUICulture:

[Threading.Thread]::CurrentThread.CurrentUICulture = 'fr-FR'; Get-Help Get-Process

我在使用英语系统,但在执行上述行之前,我更新了这样的帮助:

Update-Help -UICulture fr-FR

有了这个,上面的Get-Help电话给了我法语帮助我的英语系统。注意:如果我在新行上调用Get-Help,则不起作用。确认PowerShell在每个管道开始之前重置CurrentUICulture,这就是当命令在同一管道中时它工作的原因。

在您的情况下,您需要让人们使用以下方式安装英语帮助:

Update-Help -UICulture en-US

然后像这样执行你的脚本:

[Threading.Thread]::CurrentThread.CurrentUICulture = 'en-US'; .\myscript.ps1

12
2017-11-08 23:49



$ENUS="[Threading.Thread]::CurrentThread.CurrentUICulture = 'en-US'" 然后 invoke-expression $ENUS; Get-Help Get-Process  “invoke-expression $ ENUS;” 如果您需要运行许多命令,则会更短。 - anton_rh