如何使用列表选项和 JMESPath (az-cli) 检测资源是否存在?

How to detect if a resource exists using list option and JMESPath (az-cli)?

如果给定的查询 returns 任何结果和基于该查询的分支,我正在尝试 detech。我正在使用 PowerShell,这很有效

(az network vnet list --query "[?name=='testvnet']" | ConvertFrom-Json).Length

但后来我想知道 JMESPath 是否可行,并尝试了

的变体

az network vnet list --query "length([?name=='testvnet'])"

但使用 JMESPath 似乎无法做到这一点。或者有什么办法吗?

根据 https://jmespath.readthedocs.io/en/stable/specification.html#length 上的文档,有一个名为 length 的函数,我知道它是这样工作的。

这个特定示例的错误是

az : az network vnet list: error: argument --query: invalid jmespath_type value: "length([?name=='testvnet']"
At line:1 char:1
+ az network vnet list --query "length([?name=='testvnet'])"

错误消息中缺少结束括号是可疑的。这可能是由于在 PowerShell 控制台中使用 az cli

你快到了。尝试

az network vnet list --query "[?name == 'testvnet'] | length(@)"