在Jenkins Pipeline中向PowerShell脚本块传递变量

8
有没有办法在PowerShell脚本中使用groovy变量?我的示例脚本如下:
  node {
  stage('Invoke Installation') {
  def stdoutpowershell
  def serverName = env.fqdn
  withEnv(['serverName =  $serverName']) {
      echo "serverName : $serverName"
      stdoutpowershell = powershell returnStdout: true, script: '''
          write-output "Server is $env:serverName"
      '''
  }
  }

$envserverName -> $env:serverName - BenH
@BenH 看起来我在创建示例代码块时犯了一个小错误。应该如你所说进行修改,因此我已经更新了脚本。但问题不在这里。 - cansin aldanmaz
2个回答

11

在单引号或三个单引号中,您无法插入变量。请使用三个双引号:

  stdoutpowershell = powershell returnStdout: true, script: """
      write-output "Server is $env:serverName"
  """

有没有办法在里面放置多个语句,就像完整的PowerShell脚本块一样。例如stdoutpowershell = powershell returnStdout: true, script: """ write-output "Server is $envserverName" write-output "serevelkjl" """ ``` - 10raw

1

传递变量有两个选项。

  • 环境导出变量
  • 本地变量

添加完整的脚本,请参见下面。

node {
    stage('Invoke Installation') {
        def stdoutpowershell
        def serverName = "env.fqdn"
        
        // Use Env export variable
        withEnv(["SERVER_NAME=$serverName"]) {
            stdoutpowershell = powershell returnStdout: true, script: '''
                write-output "Server is $env:SERVER_NAME"
            '''
        }
        println stdoutpowershell
        
        // Use local variable
        stdoutpowershell = powershell returnStdout: true, script: """
            write-output "Server is ${serverName}"
        """
        println stdoutpowershell
 
    } 
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接