如何在Exchange数据库中获取2年以上的电子邮件列表,按用户使用Powershell进行sorting?

我们目前正在审查邮件归档和修改我们的保留政策。 最大的问题是(对于法律部门),我们要保存多久? 目前我们的用户有一个巨大的邮箱限制,并在过去都能够存档,因为他们认为合适。 因此,我们有几百GB的数据不在Exchange数据库中,但是我们可能最终将吮吸到Archive数据库中进行发现。 我想做的是能够为法律团队量化多less,如果我们回到1年,2年,3年等等。

我在TheDailyAdminfind了一个相当简单的PowerShell脚本,它大部分都是我所需要的,但是它把所有这些都集中在一起。 我希望能够看到结果,但是按用户sorting知道Sally拥有超过2年的47MB,查尔斯拥有超过2年的190MB等等。

这是我跑过的脚本:

get-mailboxdatabase | get-mailbox -resultsize unlimited | get-mailboxfolderstatistics -folderscope all -includeoldestandnewestitems | export-csv mailbox_stats.csv 

把它们全部放在档案里工作正常,但是我不能说谁的电子邮件属于谁。 我也专门在邮箱上运行了它,但我宁愿不在每个用户手动运行,因为这需要一段时间! 我不是Powershell的大师,但希望有一个更紧密的把握,可以帮助指向我的命令正确的方向,以帮助分解更多一点。

提前致谢!

看看多邮箱search/发现search你所需要的。 您可以通过编辑现有的脚本来获取单个文件夹的每个邮箱统计信息,但为了获取date范围内收到的所有邮件的大小,请参阅上述链接。 这不是一个快速search的任何手段…

Exchange PowerShell cmdlet不提供收集您正在查找的统计信息的方法。 正如你所发现的,它只能聚合一个文件夹。 它不能打破date范围内的统计。

我试图解决这个相同的问题,并提出以下几点。

你会想要定义$location以及更改addyears(-1)到你想要的年数。 在这个例子中,-1是1年前。

 $Mailbox = Get-MailboxDatabase | Get-Mailbox Foreach ($MBX in $Mailbox) { $usermailbx = Get-Mailbox -identity $MBX | Get-MailboxStatistics $userarchmailbx = Get-Mailbox -identity $MBX | search-mailbox -SearchQuery "received<=$((get-date).addyears(-1).toString("yyyy-MM-ddTHH:mm:ssZ"))" -EstimateResultOnly [pscustomobject]@{UserName=$usermailbx.displayname;TotalItemCount=$usermailbx.ItemCount;TotalItemSize=$usermailbx.totalitemsize.value;DeletedItemSize=$usermailbx.totaldeleteditemsize.value;ArchiveSize=$userarchmailbx.ResultItemsSize} | export-csv -append "$location\file.csv" }