自定义PowerShell提示符正在清除$ lastexitcode

时间:2011-05-16 06:52:50

标签: command-line powershell

我的powershell配置文件有一个自定义的PowerShell提示符,不幸的是导致$ lastexitcode值丢失。例如,给定一个powershell脚本“fail.ps1”,内容为“exit 123”,当我运行脚本时,$? $ lastexitcode为0时为$ false。如果我在没有使用自定义提示加载我的配置文件的情况下运行powershell,则在运行fail.ps1之后,$ lastexitcode为123。

之前有没有人见过这个问题?有没有办法在生成提示时保留$ lastexitcode?

我在使用Posh-git https://github.com/dahlbyk/posh-git时遇到了这个问题,这是一个很好的强力shell提示符。

2 个答案:

答案 0 :(得分:4)

可以通过在提示开始时捕获$LASTEXITCODE并在结束时恢复来解决问题:

function prompt {
    $realLASTEXITCODE = $LASTEXITCODE

    # ...

    $LASTEXITCODE = $realLASTEXITCODE
 }

答案 1 :(得分:1)

你需要这样做才能让它发挥作用:

function prompt {
    $realLASTEXITCODE = $global:LASTEXITCODE

    # ...

    $global:LASTEXITCODE = $realLASTEXITCODE
    # cleanup
    Remove-Variable realLASTEXITCODE
 }