You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure DevOps任务中同时认证Az PowerShell与Azure CLI?

在同一Azure DevOps任务中同时使用已认证的Az PowerShell和Azure CLI

完全可以实现,无需拆分任务,在Azure PowerShell任务中通过以下两种方式让Azure CLI自动完成认证:

方法1:利用Az模块获取的访问令牌登录CLI

兼容性强,适用于绝大多数Microsoft托管代理环境:

# 获取当前Az上下文绑定的订阅ID
$subscriptionId = (Get-AzContext).Subscription.Id

# 获取Azure资源管理器的访问令牌
$armToken = (Get-AzAccessToken -ResourceUrl "https://management.azure.com/").Token

# 用服务主体+令牌完成CLI无界面登录
az login --service-principal `
    --username $env:AZURE_CLIENT_ID `
    --password $armToken `
    --tenant $env:AZURE_TENANT_ID

# 切换到当前订阅
az account set --subscription $subscriptionId

说明

  • $env:AZURE_CLIENT_ID、$env:AZURE_TENANT_ID是Azure PowerShell任务基于你选择的Azure服务连接自动注入的环境变量
  • 直接复用Az模块已完成的认证流程生成的令牌,无需额外配置凭据

方法2:同步Az上下文到CLI(更简洁,推荐)

如果托管代理上的Az.Accounts模块版本≥2.2.0,可直接用内置命令同步认证上下文:

# 导入Az.Accounts模块(托管代理默认预装)
Import-Module Az.Accounts

# 将Az PowerShell的认证上下文转换为CLI可识别的格式
ConvertTo-AzContextToAzureCliContext -Context (Get-AzContext)

说明

  • 该命令会自动把Az模块的认证信息写入CLI本地配置,后续所有az命令都会沿用此认证上下文
  • 无需手动处理令牌或环境变量,一步完成同步

注意事项

  • 确保Azure PowerShell任务的Azure连接类型选择「Azure资源管理器」,且对应服务连接拥有执行CLI操作的足够权限
  • Microsoft托管代理默认已预装Az模块和Azure CLI,无需额外安装
  • 若遇CLI版本兼容问题,可在脚本开头添加az upgrade --yes(需谨慎操作,可能影响代理环境)

内容的提问来源于stack exchange,提问作者Thomas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 19:25:22