Come ottenere un elenco di e-mail più vecchie di 2 anni nel database di Exchange, ordinate per utente, usando Powershell?


8

Attualmente stiamo esaminando l'archiviazione delle e-mail e il rinnovamento della nostra politica di conservazione. La grande domanda è (per l'ufficio legale): quanto indietro vogliamo salvare? Attualmente i nostri utenti hanno un enorme limite per le cassette postali e in passato sono stati tutti in grado di archiviare a loro piacimento. Quindi abbiamo circa duecento GB di dati che non si trovano nel database di Exchange, ma che probabilmente finiremmo per aspirare in un database di archivio per essere scoperti. Quello che vorrei fare è poter quantificare per il team legale quanto sarebbe se tornassimo indietro di 1 anno, 2 anni, 3 anni, ecc.

Ho trovato uno script Powershell abbastanza semplice su TheDailyAdmin che fa quello che voglio per la maggior parte, ma lo mette in una pila. Mi piacerebbe essere in grado di vedere i risultati, ma ordinati per utente per sapere che Sally ha 47 MB ​​che è più vecchio di 2 anni, Charles ha 190 MB oltre 2 anni, ecc.

Ecco lo script che ho eseguito:

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

Funziona bene per metterli tutti in archivio, ma non posso dire a chi appartiene l'e-mail. L'ho anche eseguito sulla mia casella di posta in modo specifico, ma preferirei non eseguirlo manualmente su ogni utente in quanto ciò richiederebbe un po '! Non sono un guru di Powershell ma spero che qualcuno là fuori abbia una comprensione più solida e possa aiutarmi a indicarmi la giusta direzione dei comandi per aiutarlo ad abbatterlo un po 'di più.

Grazie in anticipo!

Risposte:


1

Cerca in Ricerca in più cassette postali / Ricerca per scoperta di ciò di cui hai bisogno. È possibile ottenere le statistiche per singola cassetta postale delle singole cartelle modificando lo script esistente, ma per ottenere le dimensioni di tutta la posta ricevuta in un intervallo di date fare riferimento al collegamento sopra riportato. Non sarà una ricerca rapida in alcun modo ...


1

Stavo cercando di risolvere questo stesso problema e mi sono inventato quanto segue.

Ti consigliamo di definire $locatione modificare il addyears(-1)numero di anni che vuoi. In questo esempio -1 è 1 anno fa.

$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

I cmdlet di Exchange PowerShell non forniscono un modo per raccogliere le statistiche che stai cercando. Come hai scoperto, può solo aggregare una cartella; non può suddividere le statistiche negli intervalli di date.


Bene, l'intervallo di date è ok, ho appena usato un filtro Excel per ordinare gli articoli per mostrare solo qualcosa di più vecchio di 2 anni. Sembra funzionare bene, ma quello che non posso dire è quale cartella appartiene a quale persona. Fondamentalmente è sufficiente mettere ogni cartella di ogni persona in un unico file .csv senza nome percorso per mostrare a chi appartiene quella cartella. Speravo che ci fosse un altro parametro da qualche parte che potesse dire qualcosa come "-displayUserPath" che mi avrebbe chiarito. Grazie per la risposta!
Don
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.