3

我正在尝试查找所有具有 2 个内核的虚拟机:

$ az vm list-sizes -o json --query "[?numberOfCores == 2]"
az vm list-sizes: error: argument --query: invalid query value: '[?numberOfCores == 2]'

由于我怀疑az命令有错误,我直接安装了jp,但它也给出了一个错误:

$ az vm list-sizes -o json | jp "[?numberOfCores == 2]"
SyntaxError: Invalid token: tNumber
[?numberOfCores == 2]

jmespath 规范中,看起来我必须使用反引号`字符,但它没有给出错误,而是没有结果:

$ az vm list-sizes -o json | jp '[?numberOfCores == `2`]'
[]

这是我试图过滤的(缩写)返回的 json:

$ az vm list-sizes -o json | head -n 20
[
  {
    "maxDataDiskCount": 4,
    "memoryInMb": 123,
    "name": "Standard_DS1",
    "numberOfCores": 1,
    "osDiskSizeInMb": 456,
    "resourceDiskSizeInMb": 789
  },
  {
    "maxDataDiskCount": 8,
    "memoryInMb": 123,
    "name": "Standard_DS2",
    "numberOfCores": 2,
    "osDiskSizeInMb": 456,
    "resourceDiskSizeInMb": 789
  }
]

(我混淆了尺寸,因为我不想被 MS 起诉分享商业机密或其他东西)

4

2 回答 2

3

您的 JMESPath 查询是正确的,但是自制版本的jp构建方式存在问题(它使用过时的脚本来构建jp二进制文件)。现在,自制软件安装版本jp将始终使用来自https://github.com/jmespath/jp/releases的签名发布二进制文件。这些二进制文件在每次提交时都会进行测试。如果您不使用自制软件,您应该能够brew update && brew upgrade jp或使用来自https://github.com/jmespath/jp/releases的二进制文件。

于 2017-09-12T16:42:32.017 回答
1

就我而言,我在执行与@user3151902相同的office365 cli命令时使用了带有--query 标志的双引号注意::双引号适用于字符串值,但会引发数字值错误。

错误道::

m365 spo list list -o json --query "[?BaseTemplate==`100`]" -u https://{contoso}.sharepoint.com/sites/{siteName}

正确的路::

m365 spo list list -o json --query '[?BaseTemplate==`100`]' -u https://{contoso}.sharepoint.com/sites/{siteName}
于 2021-09-30T20:34:53.870 回答