Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell ps1脚本如何在运行多个工具后设置$LASTEXITCODE?_Powershell - Fatal编程技术网

Powershell ps1脚本如何在运行多个工具后设置$LASTEXITCODE?

Powershell ps1脚本如何在运行多个工具后设置$LASTEXITCODE?,powershell,Powershell,如果.ps1脚本只是运行一个工具,那么该工具的退出代码将有效地传播到调用方,调用方可能是另一个ps1脚本或shell。它会导致CI失败(这是好事) 但是,如果一个.ps1脚本想要运行两个工具,并且如果其中一个脚本失败,最终返回失败的退出代码,那么如何做到这一点呢?在第一个工具失败后运行第二个工具将从第一个工具中删除$LASTEXITCODE,并在CI中“通过” 即使在运行第一个工具之后,我添加了以下内容: if ($LASTEXITCODE -ne 0) { exit 4

如果.ps1脚本只是运行一个工具,那么该工具的退出代码将有效地传播到调用方,调用方可能是另一个ps1脚本或shell。它会导致CI失败(这是好事)

但是,如果一个.ps1脚本想要运行两个工具,并且如果其中一个脚本失败,最终返回失败的退出代码,那么如何做到这一点呢?在第一个工具失败后运行第二个工具将从第一个工具中删除
$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
造成的。如果我把它注释掉,它就行了。归档错误: