Wie kann ich mithilfe von Powershell eine Liste von E-Mails abrufen, die älter als 2 Jahre in der Exchange-Datenbank sind und nach Benutzern sortiert sind?

8

Wir prüfen derzeit die Archivierung von E-Mails und die Überarbeitung unserer Aufbewahrungsrichtlinien. Die große Frage ist (für die Rechtsabteilung), wie weit zurück wollen wir sparen? Derzeit haben unsere Benutzer ein großes Postfachlimit und konnten in der Vergangenheit alle nach eigenem Ermessen archivieren. Wir haben also ein paar hundert GB Daten, die nicht in der Exchange-Datenbank enthalten sind, die wir aber wahrscheinlich zur Entdeckung in eine Archivdatenbank aufnehmen würden. Was ich tun möchte, ist in der Lage zu sein, für das Rechtsteam zu quantifizieren, wie viel das wäre, wenn wir 1 Jahr, 2 Jahre, 3 Jahre usw. zurückkehren würden.

Ich habe bei TheDailyAdmin ein ziemlich einfaches Powershell-Skript gefunden, das größtenteils das tut, was ich will, aber alles auf einem Stapel zusammenfasst. Ich möchte die Ergebnisse sehen können, aber nach Benutzer sortiert, um zu wissen, dass Sally 47 MB ​​hat, die älter als 2 Jahre sind, Charles 190 MB über 2 Jahre hat usw.

Hier ist das Skript, das ich ausgeführt habe:

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

Es funktioniert gut, um sie alle in die Datei aufzunehmen, aber ich kann nicht sagen, wer zu wem gehört. Ich habe es auch speziell in meiner Mailbox ausgeführt, aber ich möchte es lieber nicht bei jedem Benutzer manuell ausführen, da dies eine Weile dauern würde! Ich bin kein Powershell-Guru, aber ich hatte gehofft, dass jemand da draußen einen festeren Griff hat und mir helfen kann, in die richtige Richtung der Befehle zu weisen, um sie ein bisschen mehr zu brechen.

Danke im Voraus!

Don
quelle

Antworten:

1

Suchen Sie in Multi-Mailbox Search / Discovery Search nach dem, was Sie benötigen. Sie können Statistiken pro Postfach einzelner Ordner abrufen, indem Sie Ihr vorhandenes Skript bearbeiten. Um jedoch die Größe aller innerhalb eines Datumsbereichs empfangenen E-Mails zu ermitteln, verweisen Sie auf den obigen Link. Es wird keinesfalls eine schnelle Suche sein ...

August
quelle
1

Ich habe versucht, das gleiche Problem zu lösen, und habe Folgendes gefunden.

Sie möchten die Anzahl der gewünschten Jahre definieren $locationund ändern addyears(-1). In diesem Beispiel ist -1 vor 1 Jahr.

$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
quelle
0

Die Exchange PowerShell-Cmdlets bieten keine Möglichkeit, die gesuchten Statistiken zu erfassen. Wie Sie festgestellt haben, kann nur ein Ordner zusammengefasst werden. Die Statistik kann nicht in Datumsbereiche unterteilt werden.

langer Hals
quelle
Nun, der Datumsbereich ist in Ordnung. Ich habe gerade einen Excel-Filter verwendet, um die Elemente so zu sortieren, dass nur etwas angezeigt wird, das älter als 2 Jahre ist. Das scheint in Ordnung zu sein, aber ich kann nicht sagen, welcher Ordner zu welcher Person gehört. Im Grunde genommen wird einfach jeder Ordner von jeder Person in eine CSV-Datei ohne Pfadnamen eingefügt, um anzuzeigen, wem dieser Ordner gehört. Ich hatte gehofft, dass es irgendwo einen weiteren Parameter gibt, der so etwas wie "-displayUserPath" sagen kann, der es für mich klären würde. Danke für die Antwort!
Don