如何在Azure DevOps的Azure CLI任务中读取发布管道变量并用作环境变量?
Azure DevOps发布管道变量读取方案
PowerShell任务(含PowerShell Core)
读取普通管道变量(非秘密)
方法1:内联脚本直接使用
$(变量名)
示例:Write-Host "读取普通变量:$(MyNormalVariable)"注意:确保发布管道中已正确定义该变量,且任务未禁用「启用变量替换」(默认启用)。
方法2:通过环境变量读取
Azure DevOps会自动将管道变量转换为全大写、下划线替换特殊字符的环境变量。例如:- 管道变量
My.Variable→ 环境变量MY_VARIABLE - 管道变量
ProjectName→ 环境变量PROJECTNAME
示例:
Write-Host "通过环境变量读取:$env:MY_VARIABLE"- 管道变量
读取秘密管道变量
秘密变量默认不会暴露为环境变量,也无法直接用$(变量名)在脚本中输出(会被自动屏蔽),需通过任务的「环境变量」映射后读取:
- 在PowerShell任务的「环境变量」配置栏,添加键值对:
- 键:自定义环境变量名(如
MY_SECRET_VAR) - 值:
$(秘密变量名)(如$(MySecretVariable))
- 键:自定义环境变量名(如
- 在脚本中通过
$env:自定义环境变量名读取:Write-Host "读取秘密变量:$env:MY_SECRET_VAR"
Azure CLI任务(PowerShell Core模式)
读取普通管道变量
方法1:直接在CLI命令或内联脚本中使用
$(变量名)
示例:az vm start --resource-group $(ResourceGroup) --name $(VMName) Write-Host "读取变量:$(MyNormalVar)"方法2:通过环境变量读取
规则同PowerShell任务,转换为全大写、下划线替换特殊字符的环境变量,示例:Write-Host "环境变量读取:$env:RESOURCEGROUP"
读取秘密管道变量
同样需通过任务的「环境变量」映射:
- 在Azure CLI任务的「环境变量」配置栏,添加键值对:
- 键:自定义环境变量名(如
AZ_SECRET) - 值:
$(秘密变量名)
- 键:自定义环境变量名(如
- 在脚本中读取:
az keyvault secret set --vault-name $(VaultName) --name "MySecret" --value $env:AZ_SECRET
常见问题解决
若配置环境变量后输出$(valueName)而非实际值,检查以下两点:
- 环境变量的值是否正确填写为
$(管道变量名),而非直接写valueName; - 确保任务的「启用变量替换」选项处于启用状态(默认启用)。
内容的提问来源于stack exchange,提问作者Saurav Likhar
相关产品推荐
相关产品推荐

