KQL新手求助:如何查询从未登录过的用户?
解决KQL获取从未登录用户的问题
你之前的查询基于SigninLogs表聚合用户最后登录时间,但从未登录过的用户根本不会出现在SigninLogs里,所以改条件自然查不到结果。要找这类用户,得结合存储全量用户信息的表(比如Azure AD的AADUsers表)和SigninLogs做对比,用左反连接筛选出没有登录记录的用户。
示例查询
// 从用户主表获取全量用户信息(这里用AADUsers,根据你的环境替换成对应表) AADUsers | project UserPrincipalName, DisplayName // 按需选择要展示的字段 // 左反连接:只保留左表中未在右表出现过的用户 | join kind=leftanti ( // 从SigninLogs中提取所有有过登录记录的用户 SigninLogs | where OperationName == "Sign-in activity" | distinct Identity // 去重得到所有登录过的用户ID ) on $left.UserPrincipalName == $right.Identity
关键说明
join kind=leftanti是核心:它会返回左表(全量用户)中,没有匹配右表(登录过的用户)的条目,也就是从未登录的用户。- 注意日志保留期:如果
SigninLogs的保留时间短于用户存在的时间,有些早期登录过但日志已被清理的用户会被误判为从未登录,需要结合你的日志保留策略判断结果准确性。
内容的提问来源于stack exchange,提问作者IT4Gov
相关产品推荐
相关产品推荐

