Ramprasad
Ramprasad

Reputation: 61

Passing Jenkins environment variable in Powershell script

i would like to use a jenkins environment variable inside a power shell script.Here ${destination} is coming as null inside powershell script.Not able to identify what is the mistake i am doing.Please help

# !/bin/groovy
pipeline {
    
    agent {
        label {
            label ""
            customWorkspace "C:\\Jenkins\\workspace"
        }
    }
    environment {       
        
        def destination=''
    }
    options {
        timestamps()
        timeout(time: 60, unit: 'MINUTES')      
        skipDefaultCheckout(true)
        disableConcurrentBuilds()
     }
    
    stages {
        
        stage('TEST') 
        {     
            steps {
                    script{
                        destination="\\\\SERVERNAME\\d\$"
                    }
                    echo "${destination}"
                    
                    powershell '''
                    
                        $destinationPath ="${destination}"
                         
                        write-host $destinationPath
                        
                        write-host "test3" '''
                    
                }  
        }
    }
    post {
        always {
            deleteDir()         
        }   
}

Upvotes: 6

Views: 11725

Answers (1)

towel
towel

Reputation: 2214

You can resolve this using either one of two methods, whichever suits you best:

  1. Use """ instead of ''' to be able to substitute destination with its value. When using this approach you should escape Powershell's variable identifiers to avoid unwanted substitutions, like so: \$destinationPath = "${destination}"

  2. Export your Jenkins variables as environment variables: withEnv(["DESTINATION=$destination"]) { powershell ''' $destinationPath ="$env:DESTINATION" ... ''' }

Upvotes: 11

Related Questions