Можно ли использовать переменную внутри переменной в скрипте Powershell с Azure Переменными конвейера?
SCENARIO
Две переменные установить в Azure Трубопроводы Группа переменных - DeploymentCredentials
a. DeployUATApiPassword = "123456"
б. DeployPRODApiPassword = "789654"
Другая переменная устанавливается в разделе Переменные конвейера как DeploymentEnvironment
Во время выполнения значение * Переменная 1025 * имеет значение UAT
или PROD
В зависимости от среды, я хочу получить пароль, который хранится в виде переменной, определенной в группе переменных. Во время выполнения он должен работать примерно так ...
# setting the value of the variable to UAT
Write-Host "##vso[task.setvariable variable=DeploymentEnvironment]UAT"
Теперь переменная DevelopmentEnvironment
имеет значение UAT
. На следующем шаге я хочу получить пароль для Среда развертывания UAT, известная только во время выполнения.
# I want to get the Password
# The following works! but not useful for me, UAT is hard-coded!!
$deployPwd = $(DeployUATApiPassword) # works! but not useful for me, UAT is hard-coded!!
# I want to get the Password
# the following doesn't work, I only know the environment at runtime
# Replaces the inner variable to `DeployUATApiPassword`
# Raises an error, DeployUATApiPassword : The term 'DeployUATApiPassword' is not recognized as the name of a cmdlet...
$deployPwd = $(Deploy$(DeploymentEnvironment)ApiPassword)
# All the following didn't work either, but no error...
Write-Host $('Deploy$(DeploymentEnvironment)ApiPassword') # Output: DeployUATApiPassword
Write-Host $($("Deploy$(DeploymentEnvironment)ApiPassword")) # Output: DeployUATApiPassword
Write-Host { 'Deploy$(DeploymentEnvironment)ApiPassword' } # Output: 'DeployUATApiPassword'
Write-Host { Deploy$(DeploymentEnvironment)ApiPassword } # Output: DeployUATApiPassword
Write-Host { $(Deploy$(DeploymentEnvironment)ApiPassword) } # Output: $(DeployUATApiPassword)
Точно так же я пытался получить pwd несколькими способами, но ничего не получалось. Например, одним из способов было создание другой переменной DeployApiPassword
, и я установил значение переменной Deploy$(DeploymentEnvironment)ApiPassword
. Не повезло и в этом ...
$deployPwd = $(DeployApiPassword) # Output: DeployUATApiPassword
DESIRED OUTPUT
Я хочу получить пароль от одной из переменных, которая установлена в группе переменных. Имя переменной пароля содержит среду развертывания. Среда развертывания устанавливается только во время выполнения.
# I know something is wrong with the following, but that's how I want to run.
$deployPwd = $(Deploy$(DeploymentEnvironment)ApiPassword)
Write-Host $deployPwd # output: *** (of course, the pwd is hidden, but at least it fetches)