如何查询Azure AD GUI中显示的用户上次登录时间(超30天)?
查询Azure AD用户超过30天的上次登录时间方案
Azure AD门户用户详情页显示的上次登录时间,是整合了交互式登录(用户手动操作登录)和非交互式登录(如应用程序自动登录)的最终时间戳,对应Graph API中的LastSignInDateTime字段。要查询超过30天的该记录,可通过Microsoft Graph PowerShell模块实现,步骤如下:
1. 准备工作
- 安装并连接Microsoft Graph PowerShell模块:
# 安装模块(未安装时执行) Install-Module Microsoft.Graph -Force # 连接Graph并授予日志读取权限 Connect-MgGraph -Scopes AuditLog.Read.All, Directory.Read.All
2. 查询门户显示的用户上次登录时间
直接获取所有用户的LastSignInDateTime字段,该字段会自动返回用户最近一次的登录时间(涵盖交互式/非交互式场景),只要日志在保留期内即可查询:
Get-MgUser -All -Property Id, DisplayName, UserPrincipalName, LastSignInDateTime | Select-Object DisplayName, UserPrincipalName, LastSignInDateTime
3. 按需查询细分登录记录
如果需要区分登录类型或查看具体事件详情,可分别查询对应的日志集合:
- 查询指定时间范围的交互式登录记录:
# 替换2023-01-01为目标起始日期 Get-MgAuditLogSignIn -Filter "CreatedDateTime ge 2023-01-01T00:00:00Z" -All | Select-Object UserDisplayName, UserPrincipalName, CreatedDateTime, SignInType
- 查询指定时间范围的非交互式登录记录:
Get-MgAuditLogNonInteractiveUserSignIn -Filter "CreatedDateTime ge 2023-01-01T00:00:00Z" -All | Select-Object UserDisplayName, UserPrincipalName, CreatedDateTime
注意事项
- 仅Azure AD Premium P1/P2许可证支持将登录日志保留超过30天(最长365天),免费版仅能查看最近30天的日志。
- 若用户从未登录过Azure AD,
LastSignInDateTime会返回null。 - 首次连接Graph时,需使用具备对应权限的管理员账户完成授权。
内容的提问来源于stack exchange,提问作者Bridystone
相关产品推荐
相关产品推荐

