迁移Search-MailboxAuditLog至Search-UnifiedAuditLog查询共享邮箱
解决方案
你可以直接在Search-UnifiedAuditLog中结合筛选条件来定位共享邮箱的SendAs记录,无需先枚举权限用户。具体实现方式如下:
核心实现代码
利用-Filter参数直接匹配共享邮箱的SMTP地址,精准筛选目标记录:
# 配置查询参数 $sharedMailboxSmtp = "shared@contoso.com" $startDate = (Get-Date).AddDays(-30) # 查询过去30天 $endDate = Get-Date # 查询统一审计日志 $auditLogs = Search-UnifiedAuditLog -StartDate $startDate -EndDate $endDate ` -RecordType ExchangeItem ` -Operations SendAs ` -Filter "SendAsUserSmtp -eq '$sharedMailboxSmtp'" ` -ResultSize 5000 # 解析日志数据并提取所需字段 $results = $auditLogs | ForEach-Object { $auditData = $_.AuditData | ConvertFrom-Json [PSCustomObject]@{ LogonUserDisplayName = $auditData.UserDisplayName ItemSubject = $auditData.ItemSubject LastAccessed = $_.CreationDate SendAsMailbox = $auditData.SendAsUserSmtp } } # 输出结果 $results | Format-Table -AutoSize
关键说明
-Filter参数支持直接针对AuditData中的SendAsUserSmtp字段筛选,避免了本地过滤大量日志的低效操作- 无需提前获取共享邮箱的SendAs权限列表,直接通过共享邮箱SMTP地址定位记录
- 提取的字段与原
Search-MailboxAuditLog输出对齐,可直接替换旧脚本逻辑
注意事项
Search-UnifiedAuditLog默认-ResultSize上限为5000,如果需要查询更多记录,需结合分页逻辑(循环调用时使用-SessionId参数延续查询会话)。
内容的提问来源于stack exchange,提问作者Andrew Draper
相关产品推荐
相关产品推荐

