Você não pode usar Export-CSV
após Format-Table
no seu pipeline. Se você quiser usar Export-CSV
, mude sua Format-Table para um Select-Object
.
Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | where {$_.ObjectClass -eq “Mailbox”} | Sort-Object TotalItemSize -Descending | Select-Object @{label=”User”;expression={$_.DisplayName}},ServerName,Database,@{label=”Total Size (MB)”;expression={$_.TotalItemSize.Value.ToMB()}} | Export-CSV "C:\Users\Public\Documents\MailboxSize.log" -notypeinformation
Atualmente, você não está obtendo all das caixas de correio na sua organização. Sua consulta está filtrando Caixas de Correio de Descoberta, Caixas de Correio de Sala, Caixas de Correio de Equipamentos, etc. Talvez você já tenha percebido isso, mas eu só queria deixar claro. Se quiser melhorar o desempenho de sua consulta, talvez você queira filtrar essas caixas estranhas no início de seu pipeline modificando o cmdlet Get-Mailbox
para filtrar RecipientTypeDetails .
Get-Mailbox -RecipientTypeDetails UserMailbox -ResultSize Unlimited
Quanto ao limite 524288000, você tem algumas opções. Você pode modificar o limite no web.config para a propriedade maxAllowedContentLength, mas eu não sugeriria isso, pois realmente não sabemos qual é o limite superior que você precisará extrair esse script. Além disso, isso pode mudar no futuro, à medida que você adiciona mais caixas de correio e seu script será quebrado novamente. Definir o limite muito alto também pode causar alguns problemas.
Sua outra opção é o processo dos dados em partes. Como você está exportando para um CSV e não há nenhum parâmetro nativo -Append em Export-CSV
, será necessário usar uma solução alternativa. Dmitry Sotnikov criou um wrapper para o cmdlet Export-CSV
que implementa essa funcionalidade e que permitiria exportar para CSV linha por linha.
Atualização: no PowerShell 3.0 , Export-CSV
tem um parâmetro de acréscimo.
Seu comando seria modificado para algo como o seguinte -
$sortedStats = Get-Recipient -ResultSize Unlimited -RecipientTypeDetails UserMailbox | Get-MailboxStatistics | Sort-Object TotalItemSize -Descending
foreach ($s in $sortedStats) {
$s | Select-Object @{label=”User”;expression={$_.DisplayName}},ServerName,Database,@{label=”Total Size (MB)”;expression={$_.TotalItemSize.Value.ToMB()}} | Export-CSV "C:\Users\Public\Documents\MailboxSize.csv" -notypeinformation -Append
}
Isso tudo é completamente não testado da minha parte, mas é assim que imagino que esteja funcionando. Haverá um impacto no desempenho. Eu estaria interessado em saber seus resultados se você acabar seguindo esse caminho.