Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Command line 自定义powershell提示符正在清除$lastexitcode_Command Line_Powershell - Fatal编程技术网

Command line 自定义powershell提示符正在清除$lastexitcode

Command line 自定义powershell提示符正在清除$lastexitcode,command-line,powershell,Command Line,Powershell,我的powershell配置文件有一个自定义powershell提示符,不幸的是,它会导致$lastexitcode值丢失。例如,给定一个包含“exit 123”内容的powershell脚本“fail.ps1”,当我运行该脚本时,$?为$false,而$lastexitcode为0。如果我在运行fail.ps1后运行powershell而不加载带有自定义提示的配置文件,则$lastexitcode为123 以前有人见过这个问题吗?有没有办法在生成提示时保留$lastexitcode 我在使用P

我的powershell配置文件有一个自定义powershell提示符,不幸的是,它会导致$lastexitcode值丢失。例如,给定一个包含“exit 123”内容的powershell脚本“fail.ps1”,当我运行该脚本时,$?为$false,而$lastexitcode为0。如果我在运行fail.ps1后运行powershell而不加载带有自定义提示的配置文件,则$lastexitcode为123

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


我在使用Posh git时遇到了这个问题,这是一个不错的git powershell提示符。

问题可以通过在提示符开头捕获
$LASTEXITCODE
并在结尾还原来解决:

function prompt {
    $realLASTEXITCODE = $LASTEXITCODE

    # ...

    $LASTEXITCODE = $realLASTEXITCODE
 }

您需要这样做才能使其正常工作:

function prompt {
    $realLASTEXITCODE = $global:LASTEXITCODE

    # ...

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

您的提示是什么样子的?如果您怀疑提示定义中存在问题,请使用
(get item function:prmpt)进行比较。两个提示上的定义都是
。有趣的是,$LastExitCode应该只受对本机应用程序的调用的影响。您正在从提示符调用exe吗?如果是这样,请使用@dahlbyk的答案。我在Windows 8上的PowerShell 3中进行了测试,并且在不需要dahlbyk修复的情况下正确保留了native.EXEs的退出代码。以前的版本可能会有所不同。是的,bart,posh git中的问题已经解决了。我想我试过了,但没有成功,我一定是有一个类型或什么的。谢谢