2011-05-16 2 views
5

내 powershell 프로파일에 불행하게도 $ lastexitcode 값이 유실되는 사용자 정의 powershell 프롬프트가 있습니다. 예를 들어, 스크립트 "fail.ps1"에 "exit 123"이라는 내용이있는 powershell 스크립트가 있으면 스크립트를 실행할 때 $입니까? $ lastexitcode가 0 인 동안 $ false입니다. 대신 사용자 정의 프롬프트로 내 프로필을로드하지 않고 powershell을 실행하면 fail.ps1을 실행 한 후 $ lastexitcode는 123입니다.

누구든지이 문제를 전에 보았습니까? 프롬프트가 생성 될 때 $ lastexitcode를 보존 할 수있는 방법이 있습니까?

Posh-git, https://github.com/dahlbyk/posh-git, git에 대한 훌륭한 powershell 프롬프트를 사용할 때이 문제가 발생했습니다.

+1

을 무엇을 당신의 보이지? –

+0

문제가 프롬프트 정의에 있다고 의심되면 두 프롬프트에서'(get-item function : prmpt) .definition'을 사용하여 비교하십시오. –

+0

Interesting, $ LastExitCode는 네이티브 응용 프로그램에 대한 호출의 영향을 받아야합니다. 귀하의 프롬프트에서 exe를 부르시겠습니까? 그렇다면 @ dahlbyk의 대답으로 가십시오. –

답변

4

문제가 프롬프트의 시작 $LASTEXITCODE을 캡처하고 마지막에 복원하여 해결할 수 있습니다

당신은 만들기 위해이 작업을 수행 할 필요가
function prompt { 
    $realLASTEXITCODE = $LASTEXITCODE 

    # ... 

    $LASTEXITCODE = $realLASTEXITCODE 
} 
+0

나는 그것을 시도하고 그것이 작동하지 않았다는 것을 나는 생각했다, 유형 또는 무언가가 있어야 했음에 틀림 없다. 감사 –

1

작동 :

function prompt { 
    $realLASTEXITCODE = $global:LASTEXITCODE 

    # ... 

    $global:LASTEXITCODE = $realLASTEXITCODE 
    # cleanup 
    Remove-Variable realLASTEXITCODE 
} 
관련 문제