我的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提示符。
答案 0 :(得分:4)
可以通过在提示开始时捕获$LASTEXITCODE
并在结束时恢复来解决问题:
function prompt {
$realLASTEXITCODE = $LASTEXITCODE
# ...
$LASTEXITCODE = $realLASTEXITCODE
}
答案 1 :(得分:1)
你需要这样做才能让它发挥作用:
function prompt {
$realLASTEXITCODE = $global:LASTEXITCODE
# ...
$global:LASTEXITCODE = $realLASTEXITCODE
# cleanup
Remove-Variable realLASTEXITCODE
}