Temos uma caixa de correio que recebe e-mails de status que precisamos manter essencialmente para sempre e eles contêm anexos potencialmente grandes. Eu preciso ser capaz de mover essas mensagens para um PST em uma base regular (diária ou semanal) para que deseja automatizar isso.
No momento, estou usando um MailboxExportRequest
para colocá-los em um PST:
New-MailboxExportRequest -ContentFilter {(Received -ge '01/01/2013') -and (Received -lt '01/02/2013')} -Mailbox "MonitorMailbox" -FilePath "\Server\backup\EmailLog\MonitorMailbox 2013-01.pst"
E eu sigo isso com um SearchMailbox -DeleteContent
:
Get-Mailbox -Identity "MonitorMailbox" | Search-Mailbox -SearchQuery "Received:01/01/2013..01/02/2013" -DeleteContent
O problema é que tenho que atualizar manualmente os parâmetros de data a cada vez em quatro lugares, e estou preocupado que não seja muito transacional (se isso fizer sentido nesse contexto) .
Estou tentando criar um pequeno script PS para percorrer datas por mês e criar um conjunto de comandos para girar e exportar essas informações, mas queria saber se existe uma maneira mais simples de "mover para o PST" ou se Eu preciso tentar construir as declarações acima dinamicamente.
Aqui está um script mais completo, como eu tenho até agora, que deve exportar todos os itens para os 10 dias anteriores ao início deste mês (para acelerar o teste):
$mailbox = "Cylindric"
$endDate = Get-Date -Day 1 "00:00:00"
$startDate = $endDate.AddDays(-10)
$month = "{0:D2}" -f [int]$startDate.Month
$year = "{0:D4}" -f [int]$startDate.Year
Write-Host -NoNewline "Exporting items between $startDate and $endDate..."
New-MailboxExportRequest -Name "EmailLog$year$month" -ContentFilter {(Received -ge $startDate) -and (Received -lt $endDate)} -Mailbox $mailbox -FilePath "\ReadyNAS\backup\Mailboxes\EmailLog\EmailLog${year}-${month}.pst"
Write-Host "Done."
Write-Host -NoNewline "Waiting for export to complete..."
While(!(Get-MailboxExportRequest -Mailbox $mailbox -Name "EmailLog$year$month" -Status Completed))
{
#Sleep for a few minutes
Write-Host -NoNewline "."
Start-Sleep -s 60
}
Write-Host "Done."
Write-Host -NoNewline "Removing Export Request..."
Get-MailboxExportRequest -Mailbox $mailbox -Status Completed -Name "EmailLog$year$month" | Remove-MailboxExportRequest
Write-Host "Done."
E a saída:
Exporting items between 05/22/2013 00:00:00 and 06/01/2013 00:00:00...
Name Mailbox Status
---- ------- ------
EmailLog201305 Cylindric Queued
Done.
Waiting for export to complete..........Done.
Isso parece estar exportando muito mais do que esses 10 dias. O PST parece conter TODOS os emails!