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


8

我们目前正在考虑将电子邮件存档并修订我们的保留政策。最大的问题是(对于法律部门),我们要保存多久?当前,我们的用户有一个很大的邮箱限制,并且过去所有用户都可以按照自己的意愿进行存档。因此,我们有数百GB的数据不在Exchange数据库中,但最终可能会被吸入Archive数据库进行发现。我想做的是能够为法律团队量化如果我们退回1年,2年,3年等将会得到多少。

我在TheDailyAdmin上找到了一个相当简单的Powershell脚本,该脚本可以满足我的大部分需求,但是却将所有内容都融合在一起。我希望能够看到结果,但根据用户进行了排序,以了解Sally拥有2年以上的47MB内存,Charles拥有超过2年的190MB内存,依此类推。

这是我运行的脚本:

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

将它们全部记录在文件中效果很好,但我无法确定谁的电子邮件属于谁。我还专门在我的邮箱上运行了它,但是我宁愿不要在每个用户上手动运行它,因为这可能需要一段时间!我不是Powershell专家,但我希望那里的人能更坚定地掌握,并可以帮助我指出正确的命令方向,以帮助我进一步分解。

提前致谢!

Answers:


1

查看多邮箱搜索/发现搜索查找所需内容。您可以通过编辑现有脚本来获取各个文件夹的每个邮箱统计信息,但是要获取在日期范围内收到的所有邮件的大小,请参考上面的链接。无论如何这都不是一个快速的搜索...


1

我试图解决同样的问题,并提出了以下建议。

您将要定义$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"
}

0

Exchange PowerShell cmdlet无法提供收集所需统计信息的方法。正如您所发现的,它只能聚合一个文件夹。它无法将统计信息分解为最新范围。


日期范围还可以,我只是使用Excel过滤器对项目进行排序,只显示2年以上的数据。似乎可以,但是我无法确定哪个文件夹属于哪个人。基本上,它只是将每个人的每个文件夹放入一个.csv文件中,没有路径名来显示该文件夹属于谁。我希望在某个地方可以再输入一个参数,例如“ -displayUserPath”,以便为我清除该参数。感谢您的回复!
2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.