Como obter uma lista de emails com mais de 2 anos no Banco de Dados do Exchange, classificados por usuário, usando o Powershell?

8

No momento, estamos analisando o arquivamento de emails e a reformulação de nossa política de retenção. A grande questão é (para o departamento jurídico), em quanto tempo queremos economizar? Atualmente, nossos usuários têm um enorme limite de caixas de correio e, no passado, todos conseguiram arquivar como quisessem. Portanto, temos algumas centenas de GB de dados que não estão no banco de dados do Exchange, mas que provavelmente acabaríamos sugando um banco de dados de arquivo morto para descoberta. O que eu gostaria de fazer é poder quantificar para a equipe jurídica o quanto isso seria se voltássemos 1 ano, 2 anos, 3 anos etc.

Encontrei um script Powershell bastante simples no TheDailyAdmin que faz o que eu quero em grande parte, mas ele agrupa tudo em uma pilha. Gostaria de ver os resultados, mas classificados por usuário para saber que Sally tem 47MB com mais de 2 anos, Charles tem 190MB com mais de 2 anos, etc.

Aqui está o script que eu executei:

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

Funciona bem para colocar todos eles em arquivo, mas não sei dizer quem pertence a quem. Também o executei especificamente na minha caixa de correio, mas prefiro não executá-lo manualmente em todos os usuários, pois isso levaria algum tempo! Eu não sou um guru do Powershell, mas esperava que alguém lá fora tivesse uma compreensão mais firme e possa me ajudar a apontar na direção certa dos comandos para ajudar a quebrá-lo um pouco mais.

Desde já, obrigado!

Don
fonte

Respostas:

1

Procure na Pesquisa em várias caixas de correio / Pesquisa de descoberta o que você precisa. Você pode obter estatísticas por caixa de correio de pastas individuais editando o script existente, mas para obter o tamanho de todos os emails recebidos em um período, consulte o link acima. Não será uma pesquisa rápida, de forma alguma ...

agosto
fonte
1

Eu estava tentando resolver esse mesmo problema e veio com o seguinte.

Você desejará definir $locatione alterar o addyears(-1)número de anos que desejar. Neste exemplo -1, há 1 ano.

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

Os cmdlets do Exchange PowerShell não fornecem uma maneira de reunir as estatísticas que você está procurando. Como você descobriu, ele só pode agregar uma pasta; não pode quebrar as estatísticas nos períodos.

pescoço longo
fonte
Bem, o intervalo de datas está bom, usei um filtro do Excel para classificar os itens para mostrar apenas algo com mais de 2 anos. Isso parece funcionar bem, mas o que não sei dizer é qual pasta pertence a qual pessoa. Basicamente, basta colocar todas as pastas de todas as pessoas em um .csv sem nome de caminho para mostrar a quem essa pasta pertence. Eu esperava que houvesse mais um parâmetro em algum lugar que pudesse dizer algo como "-displayUserPath" que esclarecesse isso para mim. Obrigado pela resposta!
Don