You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

审计O365订阅90天使用数据失败,仅获取最近2天记录求助

解决Search-UnifiedAuditLog仅返回最近2天Power BI审计日志的问题

问题背景

尝试审计租户内Power BI及其他O365订阅的使用情况,但导出的Excel仅包含最近2天的数据。已确认将记录类型从误用的powerbi改为正确的20(Power BI对应的RecordType),但先后尝试两段脚本后仍只拉取到1/13和1/14的数据,怀疑时间语法存在问题。

尝试过的脚本:
第一段:

$startdate = get-date -f 10-16-2024
$activities = Search-UnifiedAuditLog -StartDate $startDate -EndDate (Get-Date) -RecordType 20
$activities | Export-Csv -Path "C:\Users\MYACCOUNT\Downloads\90dayactivitytest.csv" -NoTypeInformation

第二段:

$startDate = (Get-Date).AddDays(-90)
$activities = Search-UnifiedAuditLog -StartDate $startDate -EndDate (Get-Date) -RecordType 20
$activities | Export-Csv -Path "C:\UserActivities.csv" -NoTypeInformation

核心问题分析

  1. 时间格式解析错误:第一段脚本中用get-date -f 10-16-2024生成的是字符串,而非DateTime对象。如果系统区域设置不是MM-dd-yyyy格式,PowerShell会无法正确解析该日期,导致StartDate被默认设置为最近的日期,最终只拉取到2天的数据。
  2. 默认返回记录数限制:Search-UnifiedAuditLog默认仅返回1000条记录,若最近2天的日志量已达1000,即使时间范围覆盖90天,也只会返回这些最新记录。

修正后的脚本

基础版(日志量≤50000条)

直接传递DateTime对象,并指定最大返回记录数:

# 方式1:指定具体起始日期(DateTime类型)
$startDate = Get-Date -Month 10 -Day 16 -Year 2024
# 方式2:获取90天前的日期
# $startDate = (Get-Date).AddDays(-90)
$endDate = Get-Date

# 拉取Power BI审计日志,设置ResultSize为Unlimited(单次最大支持50000条)
$activities = Search-UnifiedAuditLog -StartDate $startDate -EndDate $endDate -RecordType 20 -ResultSize Unlimited

# 导出到CSV(指定UTF8编码避免乱码)
$activities | Export-Csv -Path "C:\Users\MYACCOUNT\Downloads\90dayactivitytest.csv" -NoTypeInformation -Encoding UTF8

分页版(日志量>50000条)

由于Search-UnifiedAuditLog单次最多返回50000条记录,超过该数量需分页获取:

$startDate = (Get-Date).AddDays(-90)
$endDate = Get-Date
$offset = 0
$allActivities = @()

# 循环分页拉取所有日志
do {
    $results = Search-UnifiedAuditLog -StartDate $startDate -EndDate $endDate -RecordType 20 -ResultSize 50000 -Offset $offset
    if ($results.Count -gt 0) {
        $allActivities += $results
        $offset += 50000
    } else {
        break
    }
} while ($true)

# 导出所有日志到CSV
$allActivities | Export-Csv -Path "C:\Users\MYACCOUNT\Downloads\90dayactivitytest.csv" -NoTypeInformation -Encoding UTF8

额外检查项

  • 确认租户的审计日志保留期限至少为90天,可通过Microsoft 365管理中心查看设置。若保留期仅2天,即使脚本正确也无法获取更早的数据。
  • 执行脚本的账号需具备查看审计日志的权限(如全局管理员、合规管理员等)。

内容的提问来源于stack exchange,提问作者Whoisme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 01:05:15