powershell:改变当前会议的文化

时间:2011-08-13 19:29:28

标签: windows powershell windows-vista powershell-v2.0

我在windows vista上使用powershell。 如何改变当前会话的文化? 我的计算机文化是tr-TR所以我收到土耳其语的错误消息。我想换成EN?

任何机会?

2 个答案:

答案 0 :(得分:13)

看看这里:http://blogs.msdn.com/b/powershell/archive/2006/04/25/583235.aspx

在这里:http://poshcode.org/2226

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)