这是一些PowerShell代码:
test.ps1:
. C:\path\to\test2.ps1
exit 5
test2.ps1:
exit 7
从标准命令提示符运行test.ps1,但是要运行PowerShell脚本,请调用:
echo %errorlevel%
预期结果是返回码7.这是PowerShell脚本中的第一个exit
命令。然而,实际结果是返回码为5.显然,包含的脚本已被终止,但其返回代码被忽略,调用脚本仍然继续。
我怎样才能真正终止脚本并返回结果代码,无论它是如何被调用的?
或者,我应该如何调用test2.ps1以便将其返回代码传递给外部世界?
后台:我的构建脚本是使用PowerShell制作的,它包含用于不同任务的模块文件。一个任务当前失败,构建服务器没有检测到错误,因为我的启动构建脚本仍然返回0。
答案 0 :(得分:5)
如果最后一个脚本/程序退出失败,您应该查询具有非零值的$lastExitCode
。因此,您的样本test1.ps1
应该是这样的:
. C:\path\to\test2.ps1
if ($lastexitcode -ne 0) { exit $lastexitcode}
exit 5