PowerShell脚本问题:Office 365联机存档邮箱项目计数结果不准确
解决Office 365存档邮箱项目数统计不准确的问题
我明白你遇到的困扰——手动存档了3封邮件,脚本却只返回1,甚至空存档邮箱也显示1,这确实让人头疼。咱们来一步步排查和解决:
问题根源
你当前用的Get-MailboxStatistics -Archive返回的ItemCount统计的是邮箱所有项目的总数,包括系统自动创建的隐藏文件夹(比如\Recoverable Items下的子文件夹)里的项目。即使你没有手动存档任何邮件,存档邮箱里也可能存在1个系统维护的隐藏项目,这就是为什么空邮箱也会显示1的原因。而你手动存档的3封邮件在用户可见的文件夹里,被系统项目的统计结果覆盖了。
解决方案:精准统计用户可见文件夹的项目数
我们可以改用Get-MailboxFolderStatistics来遍历存档邮箱的用户文件夹,排除系统文件夹后累加项目数,这样就能得到真实的手动存档邮件数量。修改后的脚本如下:
$results = @() $mailboxes = Get-Mailbox -ResultSize Unlimited -Archive foreach ($mailbox in $mailboxes) { $upn = $mailbox.UserPrincipalName $username = $mailbox.UserName # 获取存档邮箱的文件夹统计,排除系统相关文件夹 $userFolderStats = Get-MailboxFolderStatistics -Identity $upn -Archive | Where-Object { $_.FolderPath -notlike "\Recoverable Items*" -and $_.FolderPath -notlike "\*System*" -and $_.FolderPath -notlike "\Root" } # 累加所有用户文件夹的项目数 $totalUserItems = ($userFolderStats | Measure-Object -Property ItemsInFolder -Sum).Sum $results += [PSCustomObject]@{ UserPrincipalName = $upn UserName = $username TotalItemCount = $totalUserItems } } $results | Export-CSV "c:\results5.csv" -NoTypeInformation -Encoding UTF8
脚本说明
- 过滤系统文件夹:通过
Where-Object排除了Recoverable Items、系统文件夹和根目录,只统计用户实际使用的文件夹(比如存档的收件箱、已发送邮件等)。 - 累加项目数:用
Measure-Object对所有用户文件夹的ItemsInFolder求和,得到真实的手动存档项目总数。 - 输出结果:将结果存入数组后导出为CSV,保证数据准确性。
你可以运行这个脚本试试,应该就能得到你期望的3这个数值了。
内容的提问来源于stack exchange,提问作者Bernietechy
相关产品推荐
相关产品推荐

