2011-08-13 26 views
8

我在Windows Vista上使用PowerShell。 如何更改當前會話的文化? 我的電腦的文化是tr-TR,所以我收到土耳其語的錯誤消息。我想換成EN?powershell:改變當前會話的文化

有什麼機會嗎?

+3

解決方案http://stackoverflow.com/questions/2379514/powershell-formatting-values-in-another-culture/有幫助嗎? – Gabe

+0

-look here [thecnet blog](http://social.technet.microsoft.com/Forums/en/winserverpowershell/thread/f4190964-9974-410b-9915-c66966f10edc) –

回答

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') 
    

NB:由於隱式轉換,就可以只通過將培養的名稱或編號(即,作爲一個字符串或整數)到Set-Culture方法這將自動地被轉換成預期的CultureInfo值。

+6

Ehh ... no。這不起作用。 切換文化後,請將值讀出。 $ host或[System.Threading.Thread] :: CurrentThread.CurrentUICulture不會被更新。 在win 10和server 2012上用PowerShell 5測試。 –

+0

對於「這不行」......至少不要改變主機文化。但是,如果將'(Get-Date).ToString()'彈出到函數末尾,則應該看到該函數在指定的區域中返回一個日期。 –