Azure CLI jmespath查询

时间:2017-03-10 15:17:46

标签: jmespath azure-cli2

对于下面的JSON,尝试获取特定resourceType的位置列表。

此命令:  az提供者列表 - 查询" [?namespace ==' Microsoft.Compute']"最后给出了示例输出(包含所有内容的过多)。然后,我如何查询特定的资源类型?我尝试了以下方法,但它不起作用:az提供者列表 - 查询" [?包含(命名空间,' Microsoft.Compute')] | [?contains(resourceType,' virtualMachines']"

[   {     " id":" /subscriptions/fed7f475-6055-4e3c-8529-c1345df70589/providers/Microsoft.Compute",     " namespace":" Microsoft.Compute",     " registrationState":"已注册",     " resourceTypes":[       {         "别名":null,         " apiVersions":[           " 2017年3月30日&#34 ;,           " 2016年8月30日&#34 ;,           "二零一六年四月三十零日预览&#34 ;,           " 2016年3月30日&#34 ;,           " 2015年6月15日&#34 ;,           " 2015年5月1日预览"         ]         "地点":[           "东美",           "东美2",           "美国西部",           "美国中部",           "美国中北部",           "美国中南部",           "北欧",           "西欧",           "东亚",           "东南亚",           "日本东部",           " Japan West",           "澳大利亚东部",           "澳大利亚东南部",           "巴西南部",           "南印度",           "印度中部",           "西印度",           " Canada Central",           " Canada East",           "美国西部2",           "美国中西部",           "英国南部",           "英国西部",           " Korea Central",           "韩国南部"         ]         "属性":null,         " resourceType":" availabilitySets"       },   } ]

1 个答案:

答案 0 :(得分:1)

这应该有效:

az provider list --query "[?namespace=='Microsoft.Compute'].resourceTypes[].{resourceType:resourceType, locations:locations} | [?resourceType=='virtualMachines'] | [0].locations"

我没有声称这是最简单的方式 - 我自己还在学习jmespath:)