Get-AzureADAuditSignInLogs是否仅返回30天内数据?如何获取更早登录记录
获取Azure AD账户超过30天的登录日志问题解决
问题原因
Get-AzureADAuditSignInLogs cmdlet本身存在查询限制,仅能返回最近30天的登录日志,这是AzureADPreview模块的设计限制,无法通过调整该cmdlet的参数突破此限制。另外需要注意:Azure AD登录日志的保留时长取决于租户许可证:
- 免费版/基础版:仅保留30天,超过30天的日志会被自动删除,无法获取
- P1/P2版:最多保留365天,只要日志未被删除,可通过其他方式查询
解决方案
方法1:使用Microsoft Graph PowerShell模块查询
微软已逐步弃用AzureADPreview模块,推荐使用更现代的Microsoft Graph PowerShell模块来查询登录日志,该模块支持根据租户许可证的保留期查询更早的日志:
- 安装并导入对应模块:
Install-Module Microsoft.Graph.Identity.SignIns -Force Import-Module Microsoft.Graph.Identity.SignIns
- 连接到Microsoft Graph(需要
AuditLog.Read.All权限):
Connect-MgGraph -Scopes AuditLog.Read.All
- 查询指定用户的历史登录日志(示例查询90天前的记录):
$userId = "目标用户的Object ID" # 构造UTC格式的起始时间 $startDateTime = (Get-Date).AddDays(-90).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ") # 查询并筛选结果 Get-MgAuditLogSignIn -Filter "UserId eq '$userId' and CreatedDateTime ge $startDateTime" -Top 1 | Select-Object CreatedDateTime, IsInteractive, AppDisplayName
方法2:导出历史登录日志到存储账户
如果需要批量获取更早的日志,可通过Azure门户将登录日志导出到Azure存储账户或Log Analytics工作区:
- 登录Azure门户,进入Azure Active Directory > 日志 > 登录日志
- 点击顶部的导出设置,配置导出目标(存储账户/Log Analytics),设置保留期(需符合许可证限制)
- 导出完成后,可从存储账户下载日志文件,或在Log Analytics中查询分析
注意事项
- 若租户为免费版/基础版,即使使用上述方法,也无法获取超过30天的登录日志,因为日志已被系统删除
- 确保执行查询的账户拥有
AuditLog.Read.All权限,否则会出现权限不足的错误
内容的提问来源于stack exchange,提问作者hello007
相关产品推荐
相关产品推荐

