Как получить список электронных писем старше 2 лет в базе данных Exchange, отсортированный по пользователям, используя Powershell?

8

В настоящее время мы смотрим на архивирование электронных писем и пересматриваем нашу политику хранения. Большой вопрос (для юридического отдела), как далеко мы хотим сэкономить? В настоящее время наши пользователи имеют огромный лимит почтовых ящиков, и в прошлом все они могли архивировать, как им было удобно. Таким образом, у нас есть пара сотен ГБ данных, которых нет в базе данных Exchange, но мы, вероятно, в конечном итоге засадим базу данных архива для обнаружения. То, что я хотел бы сделать, - это определить количественно для команды юристов, сколько это будет, если мы вернемся на 1 год, 2 года, 3 года и т. Д.

Я нашел довольно простой сценарий Powershell в TheDailyAdmin, который делает то, что я хочу по большей части, но он объединяет все это в одну кучу. Я бы хотел видеть результаты, но отсортирован по пользователям, чтобы знать, что у Салли 47 МБ старше 2 лет, у Чарльза 190 МБ старше 2 лет и т. Д.

Вот скрипт, который я запустил:

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

Он отлично работает для того, чтобы поместить их все в файл, но я не могу сказать, кому принадлежит электронная почта. Я также запустил его на своем почтовом ящике, но я бы не стал запускать его вручную для каждого пользователя, так как это займет некоторое время! Я не гуру Powershell, но надеялся, что кто-то там будет лучше понимать, и может помочь мне указать правильное направление команд, чтобы помочь немного разбить его.

Заранее спасибо!

дон
источник

Ответы:

1

Посмотрите в Multi-Mailbox Search / Discovery Поиск того, что вам нужно. Вы можете получить статистику по отдельным почтовым ящикам для отдельных папок, отредактировав существующий скрипт, но для того, чтобы получить размер всей почты, полученной в пределах диапазона дат, используйте ссылку выше. Это не будет быстрый поиск любым способом ...

августейший
источник
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"
}
Nixphoe
источник
0

Командлеты Exchange PowerShell не позволяют собирать необходимую статистику. Как вы обнаружили, он может агрегировать только папку; он не может разбить статистику на диапазоны дат.

длинная шея
источник
Что ж, с диапазоном дат все в порядке, я только что использовал фильтр Excel для сортировки элементов, чтобы показать только что старше 2 лет. Кажется, это работает нормально, но я не могу сказать, какая папка принадлежит какому-либо человеку. По сути, это просто помещает каждую папку каждого человека в один .csv без указания пути, чтобы показать, кому принадлежит эта папка. Я надеялся, что где-то есть еще один параметр, который может сказать что-то вроде «-displayUserPath», который бы прояснил его для меня. Спасибо за ответ!
Дон