【发布时间】:2020-07-04 00:08:10
【问题描述】:
如果 .ps1 脚本仅运行一个工具,则该工具的退出代码会有效地传播到调用者,调用者可能是另一个 ps1 脚本或 shell。它可能导致 CI 失败(这很好)。
但是如果一个 .ps1 脚本想要运行 两个 工具,并且如果 either 脚本失败,最终返回失败的退出代码,该怎么做呢?在第一个工具失败后运行第二个工具会从第一个工具中删除 $LASTEXITCODE,并在 CI 中“通过”。
即使直接在运行第一个工具之后,我也添加了这个:
if ($LASTEXITCODE -ne 0) {
exit 4
}
脚本退出,但$LASTEXITCODE 仍等于0。
我发现的其他一些技术具有非常负面的副作用,即使用退出代码终止 powershell.exe 进程,但我不想在用户直接运行 ps1 脚本时强制终止用户的 shell ,或者如果我的 ps1 脚本是从另一个 ps1 脚本调用的,我不想终止调用者。我只是想设置退出代码。
有没有办法在 PowerShell 中实现这一点?
【问题讨论】:
-
您是说,执行
powershell -command "exit 27"并在之后检查$LASTEXITCODE,不会显示27?
标签: powershell