I have an Azure DevOps build pipeline that has two separate PowerShell scripts. In the first script, I am getting a value from an XML file and setting that value in an environment variable. In my second script, I want to use the value in the environment variable. Unfortunately, I don't see the environment variable getting set. At this time, I have:
Script 1:
$myXml = [xml](Get-Content ./MyXml.xml)
$departmentId = $myXml.Department.Id
Write-Host ##vso[task.setvariable variable=DepartmentId;]$departmentId
Write-Host "Set environment variable to ($env:DepartmentId)"
Get-ChildItem Env:
Write-Host "Department Id ($departmentId)"
When script 1 runs, I see:
Set environment variable to ()
[All of the environment variable BUT, I DO NOT SEE ONE NAMED "DepartmentId"]
Department Id (1)
Notice: 1) The $env:DepartmentId
value is not printing in the "Set environment variable" statement and 2) The DepartmentId
value is NOT listed in the environment variable list. My intention is to use DepartmentId
in the second script, which looks like this:
Script 2:
Write-Host "Using Department: $(env:DepartmentId)"
At this time, the script just shows:
env:DepartmentId : The term 'env:DepartmentId' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
I've seen the other related SO questions and reviewed the docs. However, this simply isn't working. I don't understand what I'm doing wrong. Can someone please show me how to fix this and explain what I'm doing wrong? Thank you!