2011-05-16 18 views
5

我的powershell配置文件有一個自定義的powershell提示,不幸的是會導致$ lastexitcode值丟失。例如,給定一個powershell腳本「fail.ps1」,其內容爲「exit 123」,當我運行腳本時,$?是$ false,而$ lastexitcode是0.如果我運行powershell而不加載我的個人資料與自定義提示,運行fail.ps1後,然後$ lastexitcode是123.

有沒有人見過這個問題?有沒有一種方法可以在生成提示時保存$ lastexitcode?

當我使用Posh-git,https://github.com/dahlbyk/posh-git,一個很好的git powershell提示符時,我遇到了這個問題。

+1

什麼是你提示樣子? –

+0

如果您懷疑問題出現在提示定義中,請在兩個提示中使用'(get-item function:prmpt).definition'進行比較。 –

+0

有趣的是,$ 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 
}