¿Cómo obtener una lista de correos electrónicos de más de 2 años en la base de datos de Exchange, ordenados por usuario, usando Powershell?

8

Actualmente estamos buscando archivar correos electrónicos y renovar nuestra política de retención. La gran pregunta es (para el departamento legal), ¿cuánto tiempo atrás queremos ahorrar? Actualmente, nuestros usuarios tienen un límite de buzón enorme, y en el pasado todos pudieron archivar como lo creían conveniente. Así que tenemos un par de cientos de GB de datos que no están en la base de datos de Exchange, pero que probablemente terminaríamos absorbiendo en una base de datos de archivo para su descubrimiento. Lo que me gustaría hacer es poder cuantificar para el equipo legal cuánto sería eso si retrocediéramos 1 año, 2 años, 3 años, etc.

Encontré un script de Powershell bastante sencillo en TheDailyAdmin que hace lo que quiero en su mayor parte, pero lo agrupa todo en una pila. Me gustaría poder ver los resultados, pero ordenados por usuario para saber que Sally tiene 47 MB ​​que tiene más de 2 años, Charles tiene 190 MB más de 2 años, etc.

Aquí está el script que ejecuté:

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

Funciona bien para ponerlos a todos en el archivo, pero no puedo decir quién es el correo electrónico de quién. También lo ejecuté específicamente en mi buzón, ¡pero prefiero no ejecutarlo manualmente en cada usuario, ya que eso tomaría un tiempo! No soy un gurú de Powershell, pero esperaba que alguien fuera más firme y pueda ayudarme a orientarme en la dirección correcta de los comandos para ayudarlo a analizarlo un poco más.

¡Gracias por adelantado!

Don
fuente

Respuestas:

1

Busque en la Búsqueda de múltiples buzones / Búsqueda de descubrimiento lo que necesita. Puede obtener estadísticas por buzón de carpetas individuales editando su script existente, pero para obtener el tamaño de todo el correo recibido dentro de un intervalo de fechas, consulte el enlace anterior. No va a ser una búsqueda rápida de ninguna manera ...

agosto
fuente
1

Estaba tratando de resolver este mismo problema y se me ocurrió lo siguiente.

Querrá definir $locationy cambiar el addyears(-1)número de años que desee. En este ejemplo, -1 es hace 1 año.

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

Los cmdlets de Exchange PowerShell no proporcionan una forma de recopilar las estadísticas que está buscando. Como has descubierto, solo puede agregar una carpeta; no puede romper las estadísticas en rangos de fechas.

cuello largo
fuente
Bueno, el intervalo de fechas está bien, acabo de usar un filtro de Excel para ordenar los elementos para que solo muestren algo anterior a 2 años. Eso parece funcionar bien, pero lo que no puedo decir es qué carpeta pertenece a qué persona. Básicamente, solo coloca cada carpeta de cada persona en un .csv sin nombre de ruta para mostrar a quién pertenece esa carpeta. Esperaba que haya un parámetro más en algún lugar que pueda decir algo como "-displayUserPath" que me aclare. ¡Gracias por la respuesta!
Don