我在windows vista上使用powershell。 如何改变当前会话的文化? 我的计算机文化是tr-TR所以我收到土耳其语的错误消息。我想换成EN?
任何机会?
答案 0 :(得分:13)
看看这里:http://blogs.msdn.com/b/powershell/archive/2006/04/25/583235.aspx
function Set-Culture([System.Globalization.CultureInfo] $culture)
{
[System.Threading.Thread]::CurrentThread.CurrentUICulture = $culture
[System.Threading.Thread]::CurrentThread.CurrentCulture = $culture
}
其他信息
要查找哪些值可用于$culture
:
这将为您提供文化类型列表:
[Enum]::GetValues([System.Globalization.CultureTypes])
选择上述类型之一(例如AllCultures),然后您可以列出该类型的可用值:
[System.Globalization.CultureInfo]::GetCultures( [System.Globalization.CultureTypes]::AllCultures )
然后,您可以使用GetCultureInfo
方法使用您感兴趣的文化的名称或编号来检索您所追求的值:
$culture = [System.Globalization.CultureInfo]::GetCultureInfo(1033)
$culture = [System.Globalization.CultureInfo]::GetCultureInfo('en-US')
注意:由于隐式转换,您只需将文化名称或编号(即字符串或整数)传递给Set-Culture
方法,该方法将自动转换为预期的CultureInfo值。
答案 1 :(得分:0)
@manojlds接受的解决方案实际上不起作用(Windows 10上为PS 5.1),这里对我有用(在github上找到):
$culture = [System.Globalization.CultureInfo]::CreateSpecificCulture("en-US")
$assembly = [System.Reflection.Assembly]::Load("System.Management.Automation")
$type = $assembly.GetType("Microsoft.PowerShell.NativeCultureResolver")
$field = $type.GetField("m_uiCulture", [Reflection.BindingFlags]::NonPublic -bor [Reflection.BindingFlags]::Static)
$field.SetValue($null, $culture)