If you're a System Administrator or you have some working experience with MS Exchange you'll most likely already know the EDB file extension and the purpose of .EDB files.
EDB is an acronym for Exchange Database, and those files are exchange database files that store in-process and non-SMTP messages; these files are formatted using a b-tree structurea and each one of them has a corresponding STM file, which contains the actual SMTP messages.
If you've stumbled upon this post, there's a high chance that you're looking for an easy, fast and/or cost-effective way to backup (or migrate) your MS Exchange mail boxes by exporting them to PST files. Such task is often used by System Administrators for performing a granular backup, being it the only option natively available for Exchange Server (using PowerShell).
The fact that we might be able to do that using PowerShell can be really useful, because we can automate and customize the process - at least to some extent: however, doing that manually brings also up a number of cons, such as:
- No central management. You won't be able to schedule backup jobs, define the target storage units in advance, and so on.
- Lack of backup statistics. You won't get a report confirming that the backup went well.
- Increased execution difficulty. That's mostly due to PowerShell usage, which can be tricky if you don't know the cmdlet and all of their options.
- No item and/or backup content preview. you won't be able to know in advance the number of converted messages, how long it will take, and so on: you will only be able to see a general backup content preview, provided you have MS Outlook installed.
- No versioning or incremental backup options.
If those disadvantages are acceptable for you go ahead with the Convert EDB to PST using PowerShell paragraph; conversely, if you want to to ease up the whole process by using a dedicated tool, skip to the Convert EDB to PST using a dedicated tool paragraph.
Convert EDB to PST using PowerShell
Exporting mailbox contents to a PST file can be done using the MailboxExportRequest cmdlet. In order to use that you need to specify 2 required parameters:
- FilePath : the network share path of the PST file to which you want to export the data;
- Mailbox : the Alias, SMTP address or Display name of the mailbox you will export.
Here's an example usage of the above cmdlet, which will backup an entire mailbox to a target PST file:
1 |
> New-MailboxExportRequest -Mailbox <user> -FilePath \\<server>\<sharedfolder>\<PSTFile>.pst |
It's worth noting that the FilePath location must be a shared folder.
In order to execute the PowerShell cmdlet, the administrator must be a member of a role group with the Mailbox Import Export permission role. If you need to add it on the fly, you can do that using the following PS command:
1 |
> New-ManagementRoleAssignment -Role "Mailbox Import Export" -User "<username>" |
For additional info regarding role and role groups management and assignment, read the following guide from Microsoft docs:
The cmdlet also features a number of optional parameters that can be used to further refine the export process, such as:
- ContentFilter. Specifies what conditions the contents of a mailbox have to match to be exported into the PST file. The conditions are provided in the form of standard PowerShell logical clauses with several item properties available for filtering (wildcards are supported).
- ExcludeFolders. Sets one or more mailbox folders to exclude.
- IncludeFolders. Sets one or more mailbox folders to include.
- IsArchive. A switch parameter, which defines the archive as the only source of the export.
- Name. Sets the name of an export request. Useful for tracking or if you want to set more than 10 export requests per a single mailbox. This is because by default Exchange assigns only 10 consecutive names to export requests related to a single mailbox (starting with MailboxExport through MailboxExport9) and then stops. To proceed when all 10 default export request names have been taken, you have to either flush your export requests or start assigning your own names using the Name parameter.
For additional info regarding the above switches and the other available options, take a look at the New-MailboxExportRequest cmdlet official Microsoft docs.
Convert EDB to PST using a dedicated tool
If the above PowerShell commands are too tricky for you, or if the drawbacks of a manual process seems to outweight the advantages, you might consider to use a dedicated tool such as Stellar Converter for EDB (or any other EDB to PST converter tool from those available on the market). To better understand how it works, check out our dedicated guide:
Conclusions
That's it, at least for now: we hope that this post will help those System Administrator that are looking for a way to convert Exchange database (EDB) mailboxes into PST file format.