如何通过PowerShell查询Exchange Online中邮件的投递目标文件夹
Exchange Online 邮件投递文件夹PowerShell查询方案
完全可以通过PowerShell实现该需求,无需依赖低效率的GUI消息追踪功能,具体操作步骤如下:
前置环境准备
- 安装Exchange Online PowerShell V3模块,打开管理员权限的PowerShell终端执行以下命令:
Install-Module -Name ExchangeOnlineManagement -Force -AllowClobber - 连接到你的Exchange Online租户:
Connect-ExchangeOnline -UserPrincipalName <你的管理员账号UPN>
具体查询操作
步骤1:定位目标邮件获取跟踪ID
使用Get-MessageTrace命令定位到需要查询的邮件,示例:查询近7天内发件人sender@domain.com发送给收件人user@yourdomain.com的所有邮件:Get-MessageTrace -RecipientAddress user@yourdomain.com -SenderAddress sender@domain.com -StartDate (Get-Date).AddDays(-7) -EndDate (Get-Date) | Select-Object MessageTraceId,InternetMessageId,Subject,Received,Status
从返回结果中记录对应邮件的MessageTraceId和收件人地址。
步骤2:提取邮件最终投递文件夹路径
使用Get-MessageTraceDetail命令解析投递事件的详情,直接获取投递文件夹:
# 替换为你实际获取的MessageTraceId和收件人地址 $messageTraceId = "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" $recipientAddress = "user@yourdomain.com" Get-MessageTraceDetail -MessageTraceId $messageTraceId -RecipientAddress $recipientAddress | Where-Object {$_.Event -eq "Deliver"} | Select-Object -ExpandProperty Detail | ConvertFrom-Json | Select-Object -ExpandProperty FolderPath
注意:
Get-MessageTrace默认仅保留最近10天的邮件追踪数据,超过10天的邮件需要先提交历史追踪任务,通过New-HistoricalSearch命令发起查询后,再获取结果中的投递路径信息。
补充验证方案
如果上述方法返回信息不完整,可以通过直接搜索收件人邮箱内容的方式验证投递位置:
# 替换为实际的InternetMessageId和收件人地址,InternetMessageId可从步骤1的返回结果中获取 $internetMessageId = "<xxxxxx.xxxxxx@mail.domain.com>" $targetMailbox = "user@yourdomain.com" Get-MailboxFolderStatistics -Identity $targetMailbox | ForEach-Object { $currentFolder = $_.FolderPath Get-MailboxItemStatistic -Identity $targetMailbox -FolderPath $currentFolder | Where-Object {$_.InternetMessageId -eq $internetMessageId} | Select-Object Subject,@{Name="实际投递文件夹";Expression={$currentFolder}} }
内容的提问来源于stack exchange,提问作者badsector
相关产品推荐
相关产品推荐

