Azure CLI中使用OData filter匹配子串过滤结果报错问题
解决
az ad app list使用contains过滤报错的问题 问题根源
az ad app系列命令依赖的是Azure AD Graph API,而非你参考的Microsoft Graph API,两者对OData函数的支持存在差异——Azure AD Graph不支持contains()函数,这就是你收到错误提示的原因。
解决方案
方案1:使用Azure AD Graph支持的OData过滤函数
Azure AD Graph仅支持startswith()、eq等基础过滤函数,根据需求选择:
- 匹配以指定字符串开头的应用名称:
az ad app list --filter "startswith(displayName, 'some-name')" - 精确匹配应用名称:
az ad app list --filter "displayName eq 'some-name'"
方案2:通过--query结合JMESPath实现任意子串匹配
如果需要做任意位置的子串匹配,可以利用Azure CLI内置的JMESPath查询能力,先拉取全量应用数据,再在本地过滤:
az ad app list --query "[?contains(displayName, 'some-name')]"
注:此方法会先获取所有应用数据到本地再过滤,适合应用数量较少的场景。
内容的提问来源于stack exchange,提问作者Bernard Halas
相关产品推荐
相关产品推荐

