【发布时间】:2020-11-13 01:32:12
【问题描述】:
大家早上好,星期五快乐!
编辑:最终在调试时自己解决了它..
以为我会在这里发布它,以便任何来到这里的人都可以得到解决方案......
得到了微软文档的帮助。
https://docs.microsoft.com/en-us/cli/azure/use-cli-effectively
原问题
我有 Azure 资源,这些资源被标记为:
"tags":{
"Application Name":"The Best App",
"Budget Line":"Home project",
"Technology":"Best Tech",
"Environment":"Development",
"Project":"Learn"
}
带有资源和标签数组的示例 json 看起来像
[{"name":"Resource1",
"tags": {
"Application Name":"The Best App",
"Budget Line":"Home project",
"Technology":"Best Tech",
"Environment":"Development",
"Project":"Learn"
}},
{"name":"Resource2",
"tags": {
"Application Name":"The Best App",
"Budget Line":"Home project",
"Technology":"Best Tech",
"Environment":"Development",
"Project":"Learn"
}},
{"name":"Resource3",
"tags": {
"Application Name":"Not App",
"Budget Line":"Home project",
"Technology":"Best Tech",
"Environment":"Development",
"Project":"Learn"
}
}
]
所以现在我要查询标记 **Application Name** = **The Best App**. 的所有 Azure 资源
我正在阅读 JMESPath 教程,并在 JMESPath 教程网站上获得了以下语法。 我试图做的: 根据标签值过滤资源,然后提取这些资源的另一个标签值。
[?tags."Application Name"==`"The Best App"`].tags."Budget Line"
下一步是使用 JMESPath 过滤器查询尝试将相同的查询作为 azure cli 查询的一部分。 请注意,我从 PowerShell 运行 azure cli,因为我比 Bash 更舒服。 无法让它工作
经过多次尝试和错误后的解决方案
查看从 https://docs.microsoft.com/en-us/cli/azure/use-cli-effectively 转义双引号的 powershell 示例 这些工作:示例在 PowerShell
- 根据其中没有空格的标记键查询 azure 资源,但投影/提取具有空格键名称的标记的值。
az resource list -g RESOURCEGROUPNAME --query "[?tags.Technology==`'Best Tech'`].tags.\`"Budget Line\`"" # Works in powershell - 根据其中具有空格的标签键查询天蓝色资源,并提取/投影具有空格键名称的标签的值。
az resource list -g RESOURCEGROUPNAME --query "[?tags.\`"Budget Line\`"==`'Home Project'`].tags.\`"Application Name\`"" # Works in powershell
小伙伴们周五快乐!希望它可以帮助某人!
【问题讨论】:
标签: azure powershell tags azure-cli jmespath