首页 > 解决方案 > 如何在电源状态正在运行且特定标签为空的 Azure 中获取 VM 的 ID?

问题描述

因此,我试图获取所有订阅和区域中所有虚拟机的 ID,其中特定标记为空。为此,我使用以下命令

az vm list -d --query '[?!not_null(tags.run)]|[].id'

请注意:我只想在标签不存在时获取 id

请注意,当我使用“!”时,我需要使用单引号来覆盖查询。运算符对not_null()函数求逆。如果我使用双引号,bash 会抛出event not found错误。

所以现在问题出现了,当我还想添加一个条件来检查 VM 的当前状态并仅在它正在运行并且标签不存在时才返回 id。

az vm list -d --query '[?!not_null(tags.run)] | [?powerState=="VM running"].id'

在这里,我必须VM running用双引号引起来,这给了我一个空输出,因为字符串不匹配,因为查询需要像这样的单引号 -

"[?powerState=='VM running'].id"

有人可以帮我解决这个问题吗?

标签: azureazure-clijmespath

解决方案


VM 运行字符串使用原始字符串文字。您只需用反引号和双引号将字符串括起来。

az vm list -d  --query '[?!not_null(tags.run)]|[?powerState==`"VM running"`].id'

推荐阅读