I am attempting to extract a certain date-range of emails from a mailbox into a PST, but using a DateTime parameter for ContentFilter
doesn't seem to work as expected.
This should export everything for the last 5 days:
$endDate = Get-Date "00:00:00"
$startDate = $endDate.AddDays(-5)
Write-Host "Exporting items between $startDate and $endDate..."
New-MailboxExportRequest -ContentFilter {(Received -ge $startDate) -and (Received -lt $endDate)} -Mailbox "EmailLog" -FilePath "\\ReadyNAS\backup\Mailboxes\EmailLog\EmailLog.pst"
But the PST ends up with the full 15+Gb of the mailbox in it.
If I specify the dates manually, it works fine:
New-MailboxExportRequest -ContentFilter {(Received -ge "01-06-2013 00:00:00") -and (Received -lt "06-06-2013 00:00:00")} -Mailbox "EmailLog" -FilePath "\\ReadyNAS\backup\Mailboxes\EmailLog\EmailLog-man.pst"
I'm not sure if this is due to some sort of regional-settings conflict, but I would have thought that passing a typed parameter would avoid that sort of sillyness. The reason I suspect this is because if I print out the dates (the Write-Host in the first example) the dates come out in US format:
[PS] C:\Windows\system32>Write-Host "Exporting items between $startDate and $endDate..."
Exporting items between 06/01/2013 00:00:00 and 06/06/2013 00:00:00...
I confirm I have solved this by specifying the content filter exactly as "(Received -ge '$startDate') -and (Received -lt '$endDate')" to prevent it from becoming $null with help from this question.
My client's Exchange Server 2013 version/build no. is 15.0.847.32.
It could be a rare condition, still I added my answer here just in case it helps someone.
Edit: Based on the concept, I have written a PowerShell Script to archive Journal Mailbox monthly with email reporting.
Yes its a known bug The workaround is to change the mailboxes date format to US format export, do the backup then change back to your own regional format, and run the script from an account using US regional settings.
ie
Messy.