Json 如何按userType=null筛选用户?

Json 如何按userType=null筛选用户?,json,microsoft-graph-api,Json,Microsoft Graph Api,我正在尝试筛选出图形查询中的Guest用户。由于不支持ne比较运算符,因此我尝试使用$filter=userType eq'Member'或userType eq null。但这也失败了。将null用户列为userType的任何已知变通方法 如果没有这些,我每次需要下载大约一百万行,然后在客户端扔掉5行中的4行,这是非常缓慢和浪费的 { "error": { "code": "Request_UnsupportedQuery", "message": "Unsupported o

我正在尝试筛选出图形查询中的
Guest
用户。由于不支持
ne
比较运算符,因此我尝试使用
$filter=userType eq'Member'或userType eq null
。但这也失败了。将
null
用户列为
userType
的任何已知变通方法

如果没有这些,我每次需要下载大约一百万行,然后在客户端扔掉5行中的4行,这是非常缓慢和浪费的

{
"error": {
    "code": "Request_UnsupportedQuery",
    "message": "Unsupported or invalid query filter clause specified for property 'userType' of resource 'User'.",
    "innerError": {
        "request-id": "411f7927-c3af-4042-a619-eee1c88971a0",
        "date": "2018-03-17T18:28:35"
    }
}

一般来说,
userType
应该是
Member
Guest
。例外情况是当您在prem Active Directory上同步时。由于
userType
是Azure AD属性,同步用户的值将为
null

如果您可以安全地假设您的on-prem用户不是来宾,那么您可以根据Azure AD用户是同步用户还是云本地用户来过滤他们。您可以通过查看
onpremissesyncenabled
属性来完成此操作。对于同步用户,这将是
true
,对于云本地用户,这将是
null

如果将其与
userType
属性结合使用,则可以使用以下
$filter
有效地仅检索非来宾用户:

$filter=onPremisesSyncEnabled eq true OR userType eq 'Member'

如果你愿意,你也可以完全避免这种情况

自2021年6月起更新

ne
比较运算符现在在图形上的userType上受支持!因此,您现在可以通过以下查询获取非来宾用户:
https://graph.microsoft.com/v1.0/users/$count?$filter=userType ne'guest'


这里有一个链接,指向该查询

对于任何想要依赖此筛选器的人,我遇到过这样的情况:对于普通用户,
onpremissesyncenabled
userType
都设置为null。