1

我正在编写一个简单的 az 命令来返回 AKS 的默认版本。我尝试了以下几种变体,但返回的结果集与我所追求的相反。关于 JSON 中的 JMESPath 过滤器表达式和布尔值,我有什么遗漏吗?

我原以为这两个命令应该只返回“默认”版本。相反,它们返回除默认值之外的所有值。

az aks get-versions -l $region --query "orchestrators[?default==true].[orchestratorVersion,default]" -o table

az aks get-versions -l $region --query "orchestrators[?default==true].{Version:orchestratorVersion,IsDefault:default}" -o table

最后我改用 !=null 过滤器,但想知道答案。

没有过滤器的数据

az aks get-versions -l $region --query "orchestrators[].{Version:orchestratorVersion,IsDefault:default}" -o json 

如下:

[
  {
    "IsDefault": null,
    "Version": "1.10.12"
  },
  {
    "IsDefault": null,
    "Version": "1.10.13"
  },
  {
    "IsDefault": null,
    "Version": "1.11.9"
  },
  {
    "IsDefault": null,
    "Version": "1.11.10"
  },
  {
    "IsDefault": null,
    "Version": "1.12.7"
  },
  {
    "IsDefault": null,
    "Version": "1.12.8"
  },
  {
    "IsDefault": null,
    "Version": "1.13.11"
  },
  {
    "IsDefault": true,
    "Version": "1.13.12"
  },
  {
    "IsDefault": null,
    "Version": "1.14.7"
  },
  {
    "IsDefault": null,
    "Version": "1.14.8"
  },
  {
    "IsDefault": null,
    "Version": "1.15.4"
  },
  {
    "IsDefault": null,
    "Version": "1.15.5"
  }
]
4

1 回答 1

2

这是JEMSPATH中的一条规则,你可以看这里的描述,就是这个文档的Raw类型。它显示如下:

在此处输入图像描述

PowerShell 和 Shell 之间也有区别。

在 PowerShell 中,您可以像这样在命令中使用“``”:

az aks get-versions -l $region --query "orchestrators[?default == ``true``].[orchestratorVersion,default]" -o table

但在 Shell 中,您需要使用“`”并进行如下更改:

az aks get-versions -l $region --query 'orchestrators[?default == `true`].[orchestratorVersion,default]' -o table
于 2019-11-07T10:53:16.540 回答