我正在阅读有关如何从 powershell 脚本获取错误并将其传递给调用它的批处理文件的信息。 bacth 文件只是 Jenkins 构建步骤(执行 Win 批处理),就这么简单:
powershell -ExecutionPolicy Unrestricted -File C:\Users\hicciuser\invoke.ps1
echo %ERRORLEVEL%
exit %ERRORLEVEL%
powershell 脚本非常简单:
Invoke-WebRequest -Uri "https://random.url" -TimeoutSec 2
Exit $LASTEXITCODE
事实证明,如果 Web 请求失败(在本例中超时),则 %ERRORLEVEL%
似乎仍然为 0。
如果在脚本中执行Exit 1
,则%ERRORLEVEL%
设置正确,因此看来Invoke-WebRequest
命令在失败时未设置正确的退出代码。有没有一种我缺少的更简单的方法来做到这一点?
最佳答案
最后我选择了这个解决方案,但我真的很想知道如何从 Invoke-WebRequest
(或任何其他 CmdLet)返回正确的错误代码:
$failing = 0
$Error.Clear()
try {
Invoke-WebRequest -Uri $url
}
catch {
Write-Host $Error
$failing = 1
}
Exit $failing
至少我可以获得不为零的退出代码,Jenkins 会很高兴并让构建失败。
关于powershell - 从脚本中的 powershell 命令获取退出代码并将其传递给 Jenkins,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32611490/