programing

현지화된 시스템에서 PowerShell 오류 출력을 영어로 강제 실행

lastmoon 2023. 8. 20. 12:28
반응형

현지화된 시스템에서 PowerShell 오류 출력을 영어로 강제 실행

다양한 운영 체제에서 PowerShell 스크립트를 실행해야 합니다.대부분은 영어 버전이지만 일부는 독일어, 프랑스어, 스페인어 등 현지화되어 있습니다.문제는 로컬 시스템 관리자가 현재 PowerShell을 거의 사용하지 않고 스크립트가 실패하고 오류가 발생하는 경우, 스크립트를 읽지 않고 오류 메시지의 스크린샷을 나에게 전송하고, 이 오류의 원인이 명확하지 않으면 g. translate에 입력하여 상황을 파악해야 한다는 것입니다.

전체 스크립트나 단일 명령 또는 매개 변수를 사용하여 실행할 수 있는 스위치나 특정 컴퓨터의 기본 언어가 아닌 영어로 PowerShell의 오류를 표시하도록 강제할 수 있는 다른 방법이 있습니까?

파이프라인 스레드의 전류를 변경할 수 있습니다.UI와 같은 문화:

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

저는 영어 시스템에 있지만 위의 라인을 실행하기 전에 다음과 같은 도움말을 업데이트했습니다.

Update-Help -UICulture fr-FR

그것과 함께, 위의 Get-Help 전화는 제 영어 시스템에 대한 프랑스어 도움을 주었습니다.참고: Get-Help(도움말 받기)로 전화를 걸어도 작동하지 않습니다.PowerShell이 전류를 재설정하는 것을 확인했습니다.각 파이프라인이 시작되기 전에 UIculture 명령이 동일한 파이프라인에 있을 때 작동하는 이유입니다.

이 경우 다음을 사용하여 영어 도움말을 설치해야 합니다.

Update-Help -UICulture en-US

그런 다음 스크립트를 다음과 같이 실행합니다.

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

[Threading.Thread]::CurrentThread.CurrentUICulture현재 한 줄기에만 영향을 미치므로 단일 .ps1 파일 실행에 사용할 수 있습니다.

PowerShell 창의 모든 명령에서 메시지를 영어로 변경하려면 다음과 같이 PowerShell 런타임에 캐시된 문화 설정을 변경해야 합니다.

# example: Set-PowerShellUICulture -Name "en-US"

function Set-PowerShellUICulture {
    param([Parameter(Mandatory=$true)]
          [string]$Name)

    process {
        $culture = [System.Globalization.CultureInfo]::CreateSpecificCulture($Name)

        $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)
    }
}

(https://gist.github.com/sunnyone/7486486) 에서)

언급URL : https://stackoverflow.com/questions/19869627/forcing-powershell-errors-output-in-english-on-localized-systems

반응형