In Exchange, whether it is Exchange 2010 or 2013 or even 2016, there may come a time when you are required to do an Export of Mailbox to a PST file. This can be for many reasons but sometimes you need information for a specific date Range rather than exporting the entire mailbox.
In this example, we will look at exporting a mailbox or multiple mailboxes to PST files using the -ContentFilter switch and specifying a date range.
We also use a foreach statement so that it will loop through each mailbox specified in a .CSV file, saving you time.
A thing to take note of here is that we use the -or switch when specifying the Sent option, this ensures that mail not only received is exported but sent as well across all folders, here is the script below:
$Users = Get-Content “C:\Users\admin\Desktop\mailboxes.csv”foreach ($User in ($Users)) {New-MailboxExportRequest -Mailbox $User -ContentFilter {(Received -gt ’02/01/2018′) -and (Received -lt ’07/01/2018′) -or (Sent -gt ’02/01/2018′) -and (Sent -lt ’07/01/2018′)} -Filepath “\\Server\PST\Folder1\$($user).pst” }
When the command has been run above, you will see all the mailbox exports start queuing.
In the network share, where we are exporting the mailboxes too, you can see the info as well.
To see how far the exports are, you can run the Get-MailboxExportRequest | Get-MailboxExportRequestStatistics command to get the status as shown above.
Once you done with your mailbox exports, you can then remove the export requests by running the following command:
Get-MailboxExportRequest | Remove-MailboxExportRequest
Hope it helps.