Como Gerar Relatório de Caixas com Mais de X GB no Exchange On-Premises com PowerShell

Fala pessoal, tudo bem com vocês?

Se você cuida de um ambiente Exchange On-Premises, provavelmente já precisou descobrir quais caixas estão ocupando mais espaço que deveriam. Seja pra planejamento de armazenamento, migração ou só pra evitar aquele susto quando o banco enche — esse script aqui vai te salvar.

O que esse script vai fazer e automatizar teu trabalho rsr

  • Listar todas as caixas que passam de um determinado tamanho (em GB) – Você que vai definir isso
  • Mostrar nome, tamanho, quantidade de itens, banco e último login
  • Exportar tudo pra um .csv

E o que você precisa pra rodar ele?

Você pode usar direto no Shell do Exchange ou importar o modulo do Exchange no seu PowerShell…

Eu prefiro rodar direto no Shell do Exchange, mas isso dai é com você

Bora lá pro código

param(
    [int]$LimiteGB = 10
)

$limiteBytes = $LimiteGB * 1GB
$caminhoCSV = "C:\Temp\CaixasAcimaDe${LimiteGB}GB.csv"

$relatorio = Get-Mailbox -ResultSize Unlimited | ForEach-Object {
    $estatisticas = Get-MailboxStatistics $_.Identity
    if ($estatisticas.TotalItemSize.Value.ToBytes() -gt $limiteBytes) {
        [PSCustomObject]@{
            Nome            = $_.DisplayName
            Tamanho         = $estatisticas.TotalItemSize
            Itens           = $estatisticas.ItemCount
            BancoDeDados    = $estatisticas.Database
            UltimoLogin     = $estatisticas.LastLogonTime
        }
    }
}

$relatorio | Export-Csv -Path $caminhoCSV -NoTypeInformation -Encoding UTF8
Write-Host "Relatório gerado com sucesso: $caminhoCSV"

Qual a parte boa ai?

Você não precisa definir direto no script o tamanho da caixa.. Nesse script ai tem um parâmetro chamado LimiteGB, que é quando você for usar o script você pode definir o tamanho que você procura.

Outra observação, o CSV é gerado na pasta C:\Temp, você pode modificar o caminho na variável caminhoCSV

Um exemplo de como usar

Vamos supor que eu salvei o script com o nome Relatorio-CaixasGrandes.ps1

.\Relatorio-CaixasGrandes.ps1 -LimiteGB 5

Eu defini o parâmetro para 5GB, agora é só esperar a magica acontecer

Administrar Exchange sem automação é pedir pra sofrer haha. Esse tipo de script simples, mas direto, evita surpresas, economiza tempo e te dá dados reais pra tomar decisão.

Se curtiu, compartilha com seu time. E se quiser automatizar mais coisas no Exchange, fica de olho aqui no blog — tem muito mais vindo por aí.