Powershell ps1脚本如何在运行多个工具后设置$LASTEXITCODE?
如果.ps1脚本只是运行一个工具,那么该工具的退出代码将有效地传播到调用方,调用方可能是另一个ps1脚本或shell。它会导致CI失败(这是好事) 但是,如果一个.ps1脚本想要运行两个工具,并且如果其中一个脚本失败,最终返回失败的退出代码,那么如何做到这一点呢?在第一个工具失败后运行第二个工具将从第一个工具中删除Powershell ps1脚本如何在运行多个工具后设置$LASTEXITCODE?,powershell,Powershell,如果.ps1脚本只是运行一个工具,那么该工具的退出代码将有效地传播到调用方,调用方可能是另一个ps1脚本或shell。它会导致CI失败(这是好事) 但是,如果一个.ps1脚本想要运行两个工具,并且如果其中一个脚本失败,最终返回失败的退出代码,那么如何做到这一点呢?在第一个工具失败后运行第二个工具将从第一个工具中删除$LASTEXITCODE,并在CI中“通过” 即使在运行第一个工具之后,我添加了以下内容: if ($LASTEXITCODE -ne 0) { exit 4
$LASTEXITCODE
,并在CI中“通过”
即使在运行第一个工具之后,我添加了以下内容:
if ($LASTEXITCODE -ne 0) {
exit 4
}
脚本退出,但仍然等于0
我发现的其他一些技术具有非常负面的副作用,即使用退出代码终止powershell.exe进程,但我不想在用户直接运行ps1脚本时强制终止用户的shell,或者如果我的ps1脚本是从另一个ps1脚本调用的,我不想终止调用方。我只想设置退出代码
在PowerShell中没有办法做到这一点吗?Andrew
您需要保存以下代码:
& ".\Test\Test-Exit27.ps1"
$Exit27 = $LASTEXITCODE
& ".\Test\Test-Exit4.ps1"
$Exit4 = $LASTEXITCODE
"Results:`n Exit27 = $Exit27`n Exit4 = $Exit4"
调用的每个.ps1文件都包含一行出口#,例如出口27
结果:
Results:
Exit27 = 27
Exit4 = 4
安德鲁
您需要保存以下代码:
& ".\Test\Test-Exit27.ps1"
$Exit27 = $LASTEXITCODE
& ".\Test\Test-Exit4.ps1"
$Exit4 = $LASTEXITCODE
"Results:`n Exit27 = $Exit27`n Exit4 = $Exit4"
调用的每个.ps1文件都包含一行出口#,例如出口27
结果:
Results:
Exit27 = 27
Exit4 = 4
HTH您是在告诉我,执行
powershell-命令“退出27”
并随后检查$LASTEXITCODE
,并没有显示27
?您是在告诉我,执行powershell-命令“退出27”
并随后检查$LASTEXITCODE
,并没有显示27
?不行。带有出口27
的ps1脚本甚至没有设置$LASTEXITCODE
,在脚本执行后仍然为0。如果脚本本身仍然返回0,那么在脚本中捕获$LASTEXITCODE
是毫无意义的。多么奇怪啊。正如您所说,它在干净的Windows PowerShell或PowerShell核心环境中工作,但在VS Dev2019 PowerShell promptOh中不工作,它不是VS PowerShell提示符。。。这是时髦的吉特!在git回购中,$LASTEXITCODE由提示函数本身清除。感谢您坚持认为这是有效的。:)我会和时尚Git的人讨论这个问题。我想时尚Git有这个问题,但很久以前就解决了。事实上,从我的powershell配置文件脚本来看,是Set-Theme-Paradox
造成的。如果我把它评论出来,它就行了。带有出口27
的ps1脚本甚至没有设置$LASTEXITCODE
,在脚本执行后仍然为0。如果脚本本身仍然返回0,那么在脚本中捕获$LASTEXITCODE
是毫无意义的。多么奇怪啊。正如您所说,它在干净的Windows PowerShell或PowerShell核心环境中工作,但在VS Dev2019 PowerShell promptOh中不工作,它不是VS PowerShell提示符。。。这是时髦的吉特!在git回购中,$LASTEXITCODE由提示函数本身清除。感谢您坚持认为这是有效的。:)我会和时尚Git的人讨论这个问题。我想时尚Git有这个问题,但很久以前就解决了。事实上,从我的powershell配置文件脚本来看,是Set-Theme-Paradox
造成的。如果我把它注释掉,它就行了。归档错误: