Почему этот запрос логического свойства интерфейса командной строки Azure кажется обратным? - PullRequest
0 голосов
/ 06 ноября 2019

Я пишу простую команду az для возврата версии AKS по умолчанию. Я пробовал несколько вариантов, как показано ниже, но возвращенный набор результатов противоположен тому, что я получаю. Есть ли что-то, чего мне не хватает в отношении выражения фильтра JMESPath и логических значений в JSON?

Эти две команды, я бы подумал, должны возвращать только версию «по умолчанию». Вместо этого они возвращают все, кроме значения по умолчанию.

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

В конце я вместо этого использовал! = Нулевой фильтр, но хотел бы знать ответ.

Данные без фильтра

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"
  }
]

1 Ответ

1 голос
/ 07 ноября 2019

Это правило в JEMSPATH, вы можете увидеть описание здесь , это тип Raw это document . Ниже показано:

enter image description here

Существует также разница между 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
...