首页 > 解决方案 > 无法解析 JMESPATH 的 json 输出

问题描述

我正在运行以下 azure cli 命令来获取特定管理组的订阅 ID。

命令:

az account management-group show --name "Simple-NonProduction-EMG-v01" -e -r

输出:

{
  "children": [
    {
      "children": null,
      "displayName": "TestSub-ABC-Dev",
      "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "name": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "roles": null,
      "type": "/subscriptions"
    },
    {
      "children": null,
      "displayName": "TestSubIdentity",
      "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "name": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "roles": null,
      "type": "/subscriptions"
    },
    {
      "children": null,
      "displayName": "TestSub-Build-DevTest",
      "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "name": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "roles": null,
      "type": "/subscriptions"
    },
    {
      "children": null,
      "displayName": "Azure ITI - TestSub Pre-prod",
      "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "name": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "roles": null,
      "type": "/subscriptions"
    },
    {
      "children": null,
      "displayName": "TestSub-IS-Demo",
      "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "name": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "roles": null,
      "type": "/subscriptions"
    },
    {
      "children": null,
      "displayName": "TestSub-PQR-QA",
      "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "name": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "roles": null,
      "type": "/subscriptions"
    },
    {
      "children": null,
      "displayName": "TestSub-PQR-PreProd",
      "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "name": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      "roles": null,
      "type": "/subscriptions"
    }
  ],
  "details": {
    "parent": {
      "displayName": "Simple-DMG-v01",
      "id": "/providers/Microsoft.Management/managementGroups/Simple-DMG-v01",
      "name": "Simple-DMG-v01"
    },
    "updatedBy": null,
    "updatedTime": "0001-01-01T00:00:00",
    "version": 0.0
  },
  "displayName": "Simple-NonProduction-EMG-v01",
  "id": "/providers/Microsoft.Management/managementGroups/Simple-NonProduction-EMG-v01",
  "name": "Simple-NonProduction-EMG-v01",
  "roles": null,
  "tenantId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "type": "/providers/Microsoft.Management/managementGroups"
}

我运行以下命令,但没有输出

az account management-group show --name "Simple-NonProduction-EMG-v01" -e -r --query [].[children]
az account management-group show --name "Simple-NonProduction-EMG-v01" -e -r --query [].[children.children.name]
az account management-group show --name "Simple-NonProduction-EMG-v01" -e -r --query [].[children.children]

我不明白

  1. 为什么我没有得到输出。
  2. 何时使用方括号与何时使用单引号。

以下命令也没有输出:

az account management-group show --name "Simple-NonProduction-EMG-v01" -e -r --query 'children.children.name'

使用单引号的参考: https ://docs.microsoft.com/en-us/cli/azure/query-azure-cli?view=azure-cli-latest

使用方括号的参考: https ://adamraffe.com/azure/2017/11/22/the-wonderful-world-of-azure-cli-jmespath-queries/

我会很感激你的意见。

谢谢

标签: jsonazureazure-clijmespath

解决方案


尝试这样做:

az account management-group show --name "Simple-NonProduction-EMG-v01" -e -r --query `children`

像这样:

az account management-group show --name "Simple-NonProduction-EMG-v01" -e -r --query 'children[].name'

推荐阅读