0

我有一个调用 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行来证明这个概念。问题是,当我直接在 slave 上Invoke-Script从session 运行时,我会在控制台中看到所有输出。但是当我在 中运行相同的代码时,我在控制台中看不到该输出。任何想法为什么它会以这种方式运行,以及如何让我将信息输出到它的控制台。PowershellPCPowershellJenkinsJenkinsJenkins

PS 修改jar文件不是选项,因为在现实中,我无法更新它(第三方),MyTest.jar仅在此处举例

4

1 回答 1

0

删除returnStdout: true就可以了。现在我在 Jenkins 控制台日志中看到了powershell script和输出MyTest.jar

于 2020-10-22T14:30:11.047 回答