使用Microsoft Graph PowerShell获取Azure AD角色分配时遇筛选子句错误
解决Get-MgGroupAppRoleAssignment的Invalid filter clause错误
问题原因
你遇到的Invalid filter clause错误,核心是Microsoft Graph API的OData筛选器要求使用驼峰式属性名,你命令里用了大写开头的ResourceId,正确的属性名应为小写开头的resourceId。
修正后的命令
将筛选器中的ResourceId改为resourceId,同时确保变量解析正常,推荐两种写法:
写法1:直接用双引号解析变量
$assignments = Get-MgGroupAppRoleAssignment -GroupId $group.Id -Filter "resourceId eq '$($sp.Id)'" | Format-List
写法2:用格式字符串拼接筛选器(更清晰)
$filterString = "resourceId eq '{0}'" -f $sp.Id $assignments = Get-MgGroupAppRoleAssignment -GroupId $group.Id -Filter $filterString | Format-List
额外验证步骤
- 确认
$sp.Id有效:执行Write-Host $sp.Id,检查输出是否为合法的服务主体GUID。 - 升级模块到最新版:执行
Update-Module Microsoft.Graph,避免旧版本的语法兼容问题。
内容的提问来源于stack exchange,提问作者Hanna Holasava
相关产品推荐
相关产品推荐

