使用 Az CLI 而不获取订阅

问题描述 投票:0回答:1

我需要使用预定义租户通过 Azure CLI 登录(使用租户 ID 或租户域名,如下例所示)。登录后,我想在管道或脚本中手动设置订阅,例如:

az login --allow-no-subscriptions --tenant contoso.onmicrosoft.com
az account set --subscription aabbccdd-1234-4567-8900-eb9ab9c0c010

问题是我在成功登录后立即得到以下输出:

Retrieving subscriptions for the selection...

[Tenant and subscription selection]

它提示用户选择订阅。我想要的是继续而不选择默认订阅,并让我使用其他命令进行设置。

到目前为止,我出于相同目的发现了此问题,但我无法在 PowerShell 脚本中设置任何类似的选项,该解决方案仅适用于 Azure CLI v2 管道: https://github.com/Azure/azure-cli/issues/17254

azure azure-devops azure-pipelines azure-cli
1个回答
0
投票

从 Azure CLI 版本 2.61.0 开始,如果您有权访问多个订阅,系统会在登录时提示您选择 Azure 订阅。

如果要禁用订阅选择器功能,请将

core.login_experience_v2
配置属性设置为
off
(doc 订阅选择器)。

此外,如果您希望除了错误和警告之外不输出任何内容,可以将

--output
设置为 azure cli 的
none
(doc 无输出格式)。

az config set core.login_experience_v2=off
az login --allow-no-subscriptions --tenant <tenant> --output none
az account set --subscription aabbccdd-1234-4567-8900-eb9ab9c0c010

输出如下: enter image description here

上面的

azure cli
交互式身份验证方法,它会弹出一个网络浏览器并要求输入代码。如果您想在DevOps管道中运行,则需要非交互式方法,您可以使用服务主体登录。请参考以下doc内容:

enter image description here

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      az login --service-principal -u <appId> -p <password> --tenant <tenant> --output none
      ......

顺便说一句,devops 中的 AzureCLI@2 任务支持 powershell 脚本,除了 powershell 脚本之外,建议直接使用 AzureCLI@2 任务和选项

visibleAzLogin: false

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.