詹金斯 - powershell 输出

Jenkins - powershell output

我有一个调用 Powershell 脚本的 jenkins 管道步骤:

stage('Run script') {
    steps {
        script {
            powershell(
                returnStdout: true, 
                script: '''
                    . $env:WORKSPACE\Script.ps1

                    Invoke-Script'''
            )
        }
    }
}

Invoke-Script 函数依次在单独的进程中执行 jar 文件:

...
$javaCommand = 'C:\Program Files\Java\jre1.8.0_261\bin\java'
$args = @("-jar", "D:\Test\MyTest.jar")
$process = Start-Process $javaCommand -ArgumentList $args -NoNewWindow -PassThru
Wait-Process -InputObject $process -ErrorAction SilentlyContinue
...

jar 文件简单愚蠢,只有几行 logger.error 行来证明这个概念。问题是,当我直接从 Powershell 会话 PC 运行 Invoke-Script 时,我会在 Powershell 控制台中看到所有输出。但是当我 运行 在 Jenkins 中使用相同的代码时,我在 Jenkins 控制台中看不到该输出。 关于它为什么会这样以及如何让我的 Jenkins 将信息输出到它的控制台的任何想法。

P.S。 jar 文件的修改不是选项,因为实际上,我无法更新它(第三方)并且 MyTest.jar 只是这里的示例

删除 returnStdout: true 即可。现在我在 Jenkins 控制台日志中看到 powershell scriptMyTest.jar 输出