powershell - 从脚本中的 powershell 命令获取退出代码并将其传递给 Jenkins

标签 powershell batch-file jenkins

我正在阅读有关如何从 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/

相关文章:

java - 使用 Java 进行命令行版本控制——处理大量嵌套目录

powershell - 如何使用脚本中的参数启动一个新的 Powershell 窗口?

android - 强制android测试从命令行批处理文件在不同的模拟器上运行

docker - jenkinsfile-如何使用脚本化管道启动docker节点

Jenkins 构建 : Could not create parent directory for lock file/home/ubuntu/. gradle/.../gradle-6.7.1-all.zip.lck

azure - 在 AzurePowerShellV5 内联脚本中引用 yaml 变量

powershell - 如何为要从提示符调用的 PowerShell 脚本设置别名?

linux - 将批处理文件转换为 Linux Shell 脚本

python - rc.local shell 脚本启动时缺少文件

java.lang.NoSuchMethodError : getProperties()Ljava/util/Map;