PowerShell: изменение культуры текущей сессии - PullRequest
9 голосов
/ 13 августа 2011

Я использую PowerShell на Windows Vista. Как я могу изменить культуру текущей сессии? Культура моего компьютера - TR-TR, поэтому я получаю сообщения об ошибках на турецком языке. Я хотел бы изменить на EN?

есть шанс?

Ответы [ 2 ]

13 голосов
/ 14 августа 2011

Посмотрите здесь: 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 голос
/ 30 мая 2019

Поскольку принятое решение @manojlds фактически не работает (PS 5.1 на Windows 10), вот что у меня работает (найдено на 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...