Dot-source PowerShell脚本文件和返回代码

时间:2015-07-17 12:28:48

标签: powershell

这是一些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。

1 个答案:

答案 0 :(得分:5)

如果最后一个脚本/程序退出失败,您应该查询具有非零值的$lastExitCode。因此,您的样本test1.ps1应该是这样的:

. C:\path\to\test2.ps1
if ($lastexitcode -ne 0) { exit $lastexitcode} 
exit 5