az tag update ERROR: (MissingSubscription) The request did not have a subscription or a valid tenant level resource provider

az tag update ERROR: (MissingSubscription) The request did not have a subscription or a valid tenant level resource provider

我正在尝试在 Azure 资源组上设置名为“GitBranch”的标签:

当我在 PowerShell 中调用命令时 window -

az tag update --resource-id "/subscriptions/79ca5b...7f/resourceGroups/ccg-afarber2" --subscription "79ca5b...7f" --operation merge --tags GitBranch=Test

然后就可以了:

但是当我在 Git Bash window 中尝试相同的命令时,它失败了。

我之前也试过调用下面的命令,也试过双引号和单引号

az login
az account set --subscription "79ca5b....7f"

但是错误还是一样:

ERROR: (MissingSubscription) The request did not have a subscription or a valid tenant level resource provider.

我试图让命令在 bash 中工作的原因是因为我的 Azure 管道任务遇到了同样的错误:

  - task: AzureCLI@2
    displayName: 'Set Resource Group tag'
    inputs:
      azureSubscription: '${{ parameters.ArmConnection }}'
      scriptType: 'bash'
      scriptLocation: 'inlineScript'
      inlineScript: |
        az tag update \
          --resource-id '/subscriptions/${{ parameters.SubscriptionId }}/resourceGroups/${{ parameters.ResourceGroupName }}' \
          --subscription '${{ parameters.SubscriptionId }}' \
          --operation Merge --tags \
          GitBranch=$(git branch --show-current)

请问这里发生了什么?

在我的电脑上安装了 azure-cli 2.28.0。

我自己找到了解决办法!

在 AzureCLI 管道任务中,当您 运行 具有以斜杠开头的参数的 az cli 命令时,MinGW bash 将自动附加当前路径。

为防止这种情况,您可以在 az 命令前添加以下变量:

MSYS_NO_PATHCONV=1 az ....

双斜杠也可以: