code

Azure DevOps - PowerShell 스크립트에서 변수 설정 및 사용

starcafe 2023. 10. 20. 13:54
반응형

Azure DevOps - PowerShell 스크립트에서 변수 설정 및 사용

Azure DevOps 빌드 파이프라인에는 두 개의 개별 PowerShell 스크립트가 있습니다.첫 번째 스크립트에서는 XML 파일에서 값을 얻고 환경 변수에 그 값을 설정합니다.두 번째 대본에서는 환경 변수의 값을 사용하고자 합니다.안타깝게도 환경 변수가 설정되지 않는 것 같습니다.이 시점에서 다음과 같은 것이 있습니다.

스크립트 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)"

스크립트 1이 실행되면 다음을 볼 수 있습니다.

Set environment variable to ()
[All of the environment variable BUT, I DO NOT SEE ONE NAMED "DepartmentId"]
Department Id (1)

공지사항: 1) The$env:DepartmentId"환경변수 설정" 문에 값이 출력되지 않고 있으며, 2)DepartmentIdvalue가 환경 변수 목록에 없습니다.제 의도는 사용하는 것입니다.DepartmentId다음과 같은 두번째 대본에서:

스크립트 2:

Write-Host "Using Department: $(env:DepartmentId)"

이때 스크립트에는 다음과 같은 내용만 표시됩니다.

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.

관련된 다른 SO 질문들을 보고 문서들을 검토했습니다.하지만, 이것은 단순히 효과가 없습니다.제가 뭘 잘못하고 있는지 이해가 안 돼요.누가 이 문제를 해결하는 방법을 보여주고 제가 무엇을 잘못하고 있는지 설명해 주실 수 있나요?감사해요!

대본1

다음을 통해 환경 변수를 설정할 때 따옴표 사용task.setvariable부터#는 PowerShell 주석을 나타냅니다.출력할 문자열에 대해 설명했습니다.

또한 파이프라인이 먼저 처리해야 하므로 환경 변수를 설정하는 스크립트에서 사용할 수 없을 수 있습니다.task.setvariable산출에 있어서

$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)"

대본2

여전히 다음을 통해 변수를 참조해야 합니다.$표정 속에당신이 그립습니다.$전에env.

Write-Host "Using Department: $($env:DepartmentId)"

환경 변수를 설정하려면 를 사용하여 설정해야 합니다.

$env:departmentId = $myXml.Department.Id

문자열 내에서 변수를 사용할 때 변수 앞에 $ 기호가 있어야 합니다.와 같이

Write-Host "Using Department: $($env:DepartmentId)"

get-childItem의 환경 변수가 다르게 보이는 이유는 액세스 변수가 아니라 실제로 pprovider를 나열하고 있기 때문입니다.

Get-ChildItem Env:

https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_environment_variables?view=powershell-6

언급URL : https://stackoverflow.com/questions/52333871/azure-devops-setting-and-using-variables-in-powershell-scripts

반응형