【问题标题】:Azure CLI: Why AZ command fails locally by runs in Azure Cloud ShellAzure CLI:为什么 AZ 命令在 Azure Cloud Shell 中运行会在本地失败
【发布时间】:2021-05-18 12:45:37
【问题描述】:

使用 --query 列出存储帐户的 az 命令在 Azure Cloud Shell 中运行,但在本地运行时失败。

知道为什么吗?

我正在使用:

  • Windows 10 电脑

  • Python 版本 3.9.1

  • AZ CLI:2.23.0

步骤:

  • 以管理员身份运行 PowerShell

  • 使用 az login 成功登录

  • 运行以下命令:

本地工作(存储/无--查询):

az storage account list  --output tsv

在本地工作(容器 / 带有 --query

az container list --query "[?contains(name, 'mycontainer2')]" --output tsv

在本地失败/在 Cloud Shell 中工作(存储/使用 --query):

az storage account list --query "[?contains(name,'terraformXX')].name" --output tsv

例外:

].name 在此时出乎意料。

C:\WINDOWS\system32> "C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\wbin\..\python.exe" -IBm azure.cli 存储帐户列表 --query [?contains (name,'terraformXX')].name --output tsv

错误提示需要一些转义字符。没有运气找到带有转义字符的解决方案 + 它在 Cloud Shell 中工作,所以我认为这可能是一个误导性消息。

提前致谢

【问题讨论】:

    标签: azure command-line-interface azure-cli azure-cloud-shell


    【解决方案1】:

    在 PowerShell 中运行 Azure CLI 时,总是会出现一些逃逸问题,在 Azure Cloud Shell 中运行它时,即使您选择 PowerShell 而不是 Bash,它也会起作用,因为 Azure Cloud Shell 在 Linux 机器上运行Ubuntu 16.04 LTS,提到了here

    要解决这个问题,每次都用转义字符解决不是长久之计,我建议你在Windows中使用Git Bash,在里面运行命令就可以了。

    另外,如果你的环境是Windows,你可以直接使用azure powershell,确保你有installed the Az module,然后使用下面的命令。

    Connect-AzAccount
    (Get-AzStorageAccount | Where-Object {$_.StorageAccountName -like '*test*'}).StorageAccountName
    

    【讨论】:

    • 谢谢乔伊。很有帮助。令人讨厌的是存在这些细微的差异。我将查询更改为使用质量而不是“包含”,如下所示 - 在本地运行时没有问题: az storage account list --query "[?name=='terraformXX'].name" --output tsv To me ,这对我来说似乎是一个错误,因为它不处理“包含”的语法。
    • @SuttyHoo 好吧,不过==contains不一样,直接用Git bash,我觉得应该是更好的办法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多