【问题标题】:Azure CLI query help - JMESPath - filter using key having space , extract keys with space in them ( from Powershell )Azure CLI 查询帮助 - JMESPath - 使用有空格的键进行过滤,提取其中有空格的键(来自 Powershell)
【发布时间】:2020-11-13 01:32:12
【问题描述】:

大家早上好,星期五快乐
编辑:最终在调试时自己解决了它..
以为我会在这里发布它,以便任何来到这里的人都可以得到解决方案...... 得到了微软文档的帮助。

https://docs.microsoft.com/en-us/cli/azure/use-cli-effectively

原问题

我有 Azure 资源,这些资源被标记为:

"tags":{
"Application Name":"The Best App",
"Budget Line":"Home project",
"Technology":"Best Tech",
"Environment":"Development",
"Project":"Learn"
}

带有资源和标签数组的示例 json 看起来像

[{"name":"Resource1",
"tags": {
"Application Name":"The Best App",
"Budget Line":"Home project",
"Technology":"Best Tech",
"Environment":"Development",
"Project":"Learn"
 }},
{"name":"Resource2",
"tags": {
"Application Name":"The Best App",
"Budget Line":"Home project",
"Technology":"Best Tech",
"Environment":"Development",
"Project":"Learn"
 }},
{"name":"Resource3",
"tags": {
"Application Name":"Not App",
"Budget Line":"Home project",
"Technology":"Best Tech",
"Environment":"Development",
"Project":"Learn"
 }
}
]

所以现在我要查询标记 **Application Name** = **The Best App**. 的所有 Azure 资源

我正在阅读 JMESPath 教程,并在 JMESPath 教程网站上获得了以下语法。 我试图做的: 根据标签值过滤资源,然后提取这些资源的另一个标签值。

[?tags."Application Name"==`"The Best App"`].tags."Budget Line"

下一步是使用 JMESPath 过滤器查询尝试将相同的查询作为 azure cli 查询的一部分。 请注意,我从 PowerShell 运行 azure cli,因为我比 Bash 更舒服。 无法让它工作

经过多次尝试和错误后的解决方案

查看从 https://docs.microsoft.com/en-us/cli/azure/use-cli-effectively 转义双引号的 powershell 示例 这些工作:示例在 PowerShell

  • 根据其中没有空格的标记键查询 azure 资源,但投影/提取具有空格键名称的标记的值。
    az resource list -g RESOURCEGROUPNAME --query "[?tags.Technology==`'Best Tech'`].tags.\`"Budget Line\`"" # Works in powershell
    
  • 根据其中具有空格的标签键查询天蓝色资源,并提取/投影具有空格键名称的标签的值。
    az resource list -g RESOURCEGROUPNAME --query "[?tags.\`"Budget Line\`"==`'Home Project'`].tags.\`"Application Name\`"" # Works in powershell
    

小伙伴们周五快乐!希望它可以帮助某人!

【问题讨论】:

    标签: azure powershell tags azure-cli jmespath


    【解决方案1】:

    经过多次尝试和错误后的解决方案

    查看从 https://docs.microsoft.com/en-us/cli/azure/use-cli-effectively 转义双引号的 powershell 示例 这些工作:示例在 PowerShell

    • 根据其中没有空格的标记键查询 azure 资源,但投影/提取具有空格键名称的标记的值。
      az resource list -g RESOURCEGROUPNAME --query "[?tags.Technology==`'Best Tech'`].tags.\`"Budget Line\`"" # Works in powershell
      
    • 根据其中具有空格的标签键查询天蓝色资源,并提取/投影具有空格键名称的标签的值。
      az resource list -g RESOURCEGROUPNAME --query "[?tags.\`"Budget Line\`"==`'Home Project'`].tags.\`"Application Name\`"" # Works in powershell
      

    小伙伴们周五快乐!希望它可以帮助某人!

    【讨论】:

      【解决方案2】:

      这是一个完全不同的上下文,但以防万一它对某人有帮助,作者的解决方案对我不起作用doing a JSON query from Ansible(它也使用 JMESPath)。相反,我必须执行以下操作:

      storage_url: "{{ openstack_api_versions.stdout | from_json | json_query('[? \"Service Type\" == `object-store`].Endpoint') | first }}"
      

      在这种情况下,它只能在没有反引号的情况下工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-02
        • 2017-05-22
        • 1970-01-01
        • 2015-03-23
        • 1970-01-01
        相关资源
        最近更新 更多