8

Is there a way to use groovy variables inside a powershell script? My sample script is as following..

  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"
      '''
  }
  }
cansin aldanmaz
  • 119
  • 1
  • 5
  • 10

2 Answers2

11

You cannot interpolate variables in single quotes or triple-single quotes. Use triple-double-quotes:

  stdoutpowershell = powershell returnStdout: true, script: """
      write-output "Server is $env:serverName"
  """
rnicolas
  • 85
  • 2
  • 8
Rob Hales
  • 5,123
  • 1
  • 21
  • 33
  • Is there any way to have more then one statement inside , like whole powershell script block loke ~~~ stdoutpowershell = powershell returnStdout: true, script: """ write-output "Server is $envserverName" write-output "serevelkjl" """ ``` – 10raw Apr 22 '20 at 01:22
1

There are two options for passing variables.

  • Env export variable
  • local variable

Add the complete script, see the below.

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
 
    } 
}
Changemyminds
  • 1,147
  • 9
  • 25