返回到PowerShell时,为什么批处理退出代码损坏了?

时间:2013-04-25 00:25:59

标签: powershell exit-code

在PowerShell中运行此代码会产生奇怪的结果:

PS> .\test.bat; $lastexitcode
>exit /b 0
2

PS> cmd /c exit /b 0; $lastexitcode
0

有人可以解释如何更正批处理文件版本吗?我还想指出0以外的退出值正常工作。

2 个答案:

答案 0 :(得分:1)

我能够在PSv2中使用exit /b <code>进行重现,它似乎在PSv3中按预期工作。对于PSv2,当我删除/b时,它开始按预期工作,这意味着When used in a batch script, this option will exit only the script (or subroutine) but not CMD.EXE

有关PowerShell处理退出代码的问题报告错误: https://connect.microsoft.com/PowerShell/SearchResults.aspx?SearchQuery=exit%2520code

我没有特别看到这一点,但这并不是说它没有在PSv3中修复。

答案 1 :(得分:0)

所有这些解决方案都有效。如果有人能解释我会很感激:

PS> & cmd.exe /c 'test.bat && exit'; $lastexitcode
>exit /b 0
0

PS> cmd.exe /c 'test.bat && exit'; $lastexitcode
>exit /b 0
0