Jenkins Powershell从变量传递脚本

时间:2019-03-12 13:33:42

标签: powershell jenkins jenkins-pipeline

我定义了一个詹金斯步骤:

script {
        def cmd =  ' & "' + env.WORKSPACE + '\\SpearsLoad\\Scripts\\DeploySSISPackage.Ps1 -server ' + dbServer + ' -ProjectFilePath ' + env.WORKSPACE + '\\SpearsLoad\\bin\\' + buildConfig + '\\SpearsLoad.ispac"'
        println cmd
        def msg = powershell(returnStdout: true, script: ' & "' + env.WORKSPACE + '\\SpearsLoad\\Scripts\\DeploySSISPackage.Ps1 -server ' + dbServer + ' -ProjectFilePath ' + env.WORKSPACE + '\\SpearsLoad\\bin\\' + buildConfig + '\\SpearsLoad.ispac"')
        println msg
        }

在println cmd上,我得到了我想要的Powershell:

c:\workspace\Spears_master\SpearsLoad\Scripts\DeploySSISPackage.Ps1 -server LONSQLLD01\L14D1 -ProjectFilePath c:\workspace\Spears_master\SpearsLoad\bin\development\SpearsLoad.ispac

我尝试在powershell命令中插入表达式:

 powershell(returnStdout: true, script: ' & "' + env.WORKSPACE + '\\SpearsLoad\\Scripts\\DeploySSISPackage.Ps1 -server ' + dbServer + ' -ProjectFilePath ' + env.WORKSPACE + '\\SpearsLoad\\bin\\' + buildConfig + '\\SpearsLoad.ispac"')

与使用变量一样失败

powershell(returnStdout: true, script: cmd)

在两种情况下,我都会得到:不被识别为cmdlet,函数,脚本文件或可运行程序的名称。

感觉就像一个逃避的问题,但我迷路了-谁能指出我正确的方向

1 个答案:

答案 0 :(得分:2)

& "somecommand" <arguments>包含空格时,在Powershell中通常使用&符号somecommand

请注意,您的示例中的参数不应该放在双引号中。通过将参数放在引号中,您将迫使powershell将参数解释为命令名称的一部分,这将不起作用。