如何-通过az rest-方法查询

时间:2020-09-24 21:43:32

标签: azure azure-cli azure-rest-api

尽管我不是JMESPath的新手,但即使如此,我还是感到非常傻眼,因为我拉出的所有文档都没有一个我可以轻松使用的相对有效的示例。例如,from the Query Azure CLI command output忽略了返回的输出如何包装在value键中的方式-正如GitHub中的问题所解释的;但是即使尝试使用该语法,我也没有得到任何积极的结果。

我需要做的是返回类似于以下内容的集合:

az rest --method get --url https://graph.microsoft.com/v1.0/directoryRoles/ --query "[?contains(displayName,'Administrator')]" --output json

预期收益应为:

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#directoryRoles",
  "value": [
    {
      "deletedDateTime": null,
      "displayName": "Foo Administrator",
      "id": "09fe6ef5-4af5-650d-a2e5-63895bba8f16",
      "otherId": "4d2ac1ba-3253-41a0-a1f9-a3e0f568773a"
    },
     {
      "deletedDateTime": null,
      "displayName": "Bar Administrator",
      "id": "1602300e-a17b-42d0-97a2-e3d0f0c1fa14",
      "otherId": "fda7a751-a60a-444b-974d-02352ee8fa1c"
    },
    {
      "deletedDateTime": null,
      "displayName": "Foobar Service Administrator",
      "id": "f94ad3a3-5e69-4638-b47d-e4df2d831dc8",
      "otherId": "59091246-12e8-4a86-aa5a-066175b1a7a8"
    },
[...]

1 个答案:

答案 0 :(得分:0)

...因此,根据Microsoft Graph文档,任何资源均不支持contains字符串运算符。但是我可以通过jq来输出数组:

az rest --method get --url https://graph.microsoft.com/v1.0/directoryRoles/ \
    | jq '.value[] | select(.displayName | contains("Administrator"))'