How to export an Exchange Mailbox to PST

Exchange 2010 SP1 and later doesn’t allow by default for any user to export a mailbox. You have to assign those rights to a specific user. Use the following command :


New-ManagementRoleAssignment –Role "Mailbox Import Export" –User domain\user


Now that we have an user with the appropriate rights, make sure you have the location ready where you wish to store the PST files. Make sure that this folder has read/write rights to the Exchange Trusted Subsystem :


Now export the mailbox to a PST with the following command:

New-MailboxExportRequest –Mailbox user –FilePath \\servername\Export\user.pst


Use the following command to show the progress


Get-MailboxExportRequest -Name MailboxExport | fl


When the export has been completed, remove the mailbox from the old Exchange system using the following command:

Get-MailboxExportRequest | where {$_.status -eq "Completed"}

Solved : Cannot display the folder.

I found out that opening very large mailboxes (several GB’s) using Outlook 2013 (32 bit) I ran into a not enough free memory problem :



After some troubleshooting I found out that there are 2 solutions. The first one is completely disable caching of the mailbox. But that was not a working solution for me, because sometimes I want to open my email without a working internet connection. This is the solution that worked for me :



Leave use cached exchange mode on, and clear (disable) the download shared folders and download public favorites.

I’ve never seen the error since!

Messages stuck in Exchange 2010 queue (resolved)

Today a collegae of mine ran into a problem with Exchange 2010. Messages both internally/externally were not delivered. We noticed that the Exchange server was using 100% CPU resources.  After some investigation we noticed that the submission queue was building up.

We decided to suspend the queue, exporting the messages. Then deleting the queue and recreating it. Finally we imported the exported messages. We used the following steps :

First open the Exchange Management Shell

Show all Exchange queues


Suspend all messages in this queue

get-queue exchangeserver#submission | get-message | suspend-message

Export all suspended messages

$array = @(Get-Message -Queue "ExchangeServer\submission" -ResultSize unlimited) 
$array | ForEach-Object {$i++;Export-Message $_.Identity | AssembleMessage -Path ("c:\Mailqueue\"+ $i +".eml")}



Stop the MsexchangeTransport service

Stop-Service MsExchangeTransport

Now rename the queue directory, the default directory is


Startthe MsexchangeTransport service

Start-Service MsExchangeTransport

Exchange & Lync : Find and fix broken inheritance

Many times I’ve ran into the following error :

move mailbox

(Error : unsufficient access rights to perform the operation) while moving Lync users of moving mailboxes in Exchange.

This is due to the following :


Include inheritable permissions MUST BE ENABLED. (Also for other tasks)

When this is one or a couple of users this is no problem. When you have >100 users then you don’t want to do this manually.

This is how to script this :

First check witch users are having this problem using the following command :

Get-QADUser -SizeLimit 0 | where {$_.DirectoryEntry.psbase.ObjectSecurity.AreAccessRulesProtected}

Example :


You see the accounts which are having this problem. Nothing is fixed yet. Therefore you need to run the following command :

Get-QADUser -SizeLimit 0 | where {$_.DirectoryEntry.psbase.ObjectSecurity.AreAccessRulesProtected} | Set-QADObjectSecurity -UnlockInheritance

Exchange 2007/2010 : Moving mailboxes

Moving mailboxes from one database/server to another is fairly easy. I prefer to use the shell interface but you can also use the GUI.

The following commands are handy :

New-MoveRequest -Identity <mailbox> –TargetDatabase <targetdatabase>

(This commands moves one specified mailbox to another database)

You can also use to move mailboxes from one database to another with the following command :

Get-Mailbox -Resultsize Unlimited -Database <SpurceDatabase> | New-MoveRequest -TargetDatabase <targetdatabase>

Often I use the following command to move all mailboxes from one server to another server :

Get-Mailbox –Server <servername> | New-MoveRequest –TargetDatabase <targetdabase>

It’s also possible to use a where statement (example which OU) :

Get-Mailbox -Resultsize Unlimited | Where {$_.OrganizationalUnit -like “*sales*”} | New-MoveRequest -TargetDatabase <TargetDatabase>

How to move Exchange Catalog files to different drive


This is how to move the Exchange Catalog files to a different drive :

Open the exchange management shell and execute the following command

Set-MailboxDatabase -Identity databasename -IndexEnabled $false

Stop the Microsoft Exchange Search Indexer service




You can move your old files to the new directory, in my case the files were in the following dir :


The files will be in the parent directory were the Exchange Mailbox database are also located.

Now start the Microsoft Exchange Search Indexer service and execute the following command :

Set-MailboxDatabase -Identity databasename -IndexEnabled $false