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

如何在EAC中按多个主题过滤Get-MessageTrace日志?

过滤特定主题的Office 365已发送邮件日志并导出CSV

嘿,没问题!要过滤特定主题的已发送邮件日志其实很简单,你只需要在现有的PowerShell脚本里添加主题匹配的逻辑就行。我给你两种常用的实现方式,你可以根据需求选:

方法1:用Get-MessageTrace自带的-Subject参数(快速直接)

这个参数支持通配符,适合模糊匹配主题里的关键词。比如你要找所有包含「Q3销售报告」的邮件,代码可以这么写:

# 保留你原来的Exchange Online连接代码
Connect-ExchangeOnline

# 定义目标主题(*代表任意字符,实现模糊匹配)
$targetSubject = "*Q3销售报告*"

# 获取过去2天、指定发件人、已发送且符合主题的邮件日志
$filteredTrace = Get-MessageTrace -SenderAddress "your-account@contoso.com" `
    -StartDate (Get-Date).AddDays(-2) `
    -EndDate (Get-Date) `
    -Status Sent `
    -Subject $targetSubject

# 导出为CSV格式(指定路径和编码,避免乱码)
$filteredTrace | Export-Csv -Path "C:\YourLogsFolder\Sent_Email_Trace.csv" -NoTypeInformation -Encoding UTF8

方法2:用Where-Object做更灵活的过滤

如果需要更复杂的匹配规则(比如不区分大小写、正则表达式匹配),可以先用Get-MessageTrace拉取基础日志,再用Where-Object做本地过滤:

Connect-ExchangeOnline

# 先拉取基础日志,再过滤主题
$filteredTrace = Get-MessageTrace -SenderAddress "your-account@contoso.com" `
    -StartDate (Get-Date).AddDays(-2) `
    -EndDate (Get-Date) `
    -Status Sent | 
    Where-Object { $_.Subject -match "Q3销售报告" } # -match默认不区分大小写,要区分用-cmatch

# 导出CSV
$filteredTrace | Export-Csv -Path "C:\YourLogsFolder\Sent_Email_Trace.csv" -NoTypeInformation -Encoding UTF8

实用小提示

  • 若需精确匹配完整主题,直接去掉通配符,将$targetSubject设为完全一致的主题文本即可
  • 权限注意:确保你的PowerShell连接账户拥有「查看邮件追踪日志」的权限(Exchange管理员默认具备,普通用户可能需要额外授权)
  • 效率优化:如果日志量较大,优先用方法1——它是在服务器端完成过滤,比拉取所有日志后本地过滤的效率高很多

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:51:04