Powershell script to perform exchange admin tasks

Jerry Seinfield
Jerry Seinfield used Ask the Experts™
Hi Experts,

I am kind of rush with the export of bulk mailboxes to a PST files and the EAC really sucks to perform bulk email searches and then export the results to multiple PST

Need you help to build a PowerShell script that basically will read from an input CSV file that contains exchange display name, database, and email address

So, for any member on the CSV file

Perform following tasks

' comment, the cmdlet below performs a new search against all sourcemailboxes specified there, but we should use display names for each user within the csv file

New-MailboxSearch -Name "Legal" -SourceMailboxes user1,user2 -TargetMailbox "LegalDiscovery" -StartDate "03/01/2013" -EndDate "07/02/2013" -SearchQuery 'Item1 OR item2'

' perform a search of the entire mailbox to a PST and no search criteria defined
New-MailboxExportRequest -Mailbox User1 -IncludeFolders "#Inbox#" -FilePath \\SERVER01\PSTFileShare\User1\User1.pst

'Once it finished the first search and export for the first user, will perform the remove-mailboxexportrequest to release resources. validate the pst has been created on the shared folder

Get-MailboxExportRequest | Remove-MailboxExportRequest

then repeat the entire process for each user in the CSV file

Can someone please help me with this request?
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®


Any updates?

Please, do not neglect this question

Thanks in advance
Senior Solution Architect
Most Valuable Expert 2015
Top Expert 2015
Give the below a try... I have not tested this so please test in a lab or with one account before doing a bulk import.

Make sure that your CSV has DisplayName and EmailAddress with NO spaces in the column headings.

$Import = import-csv "c:\filename.csv"
ForEach ($line in $Import) 

            New-MailboxSearch -Name "Legal" -SourceMailboxes $line.DisplayName -TargetMailbox "LegalDiscovery" -StartDate "03/01/2013" -EndDate "07/02/2013" -SearchQuery 'Item1 OR item2'
            New-MailboxExportRequest -Mailbox $line.Emailaddress -IncludeFolders "#Inbox#" -FilePath "\\SERVER01\PSTFileShare\($line.DisplayName).pst"

            $CheckCompleted = Get-MailboxExportRequest -Status "Completed"

               if ($CheckCompleted -eq "Completed")


                    $CheckCompleted | Remmove-NewMailboxExportRequest


Open in new window


Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial