Exporter et importer des boites aux lettres sur Exchange 2010,2013,2016

Bonjour,

Vous changez de serveur de mail et vous avez besoin de récupérer vos données ? ça tombe bien ! 😀 Dans ce tutoriel nous allons voir comment Exporter les  Personal storage Table (PST) de vos boites aux lettres grâce aux cmdlets PowerShell Exchange.

 

1- Créer un dossier partagé

Nous allons commencer par créer un nouveau dossier sur le serveur que nous allons nommer PST et partager avec les autorisations suivante : Exchange Trusted Subsystem – Lecture/Ecriture

 

2- Affecter les droits d’import/export

a)  Utilisateur

Ensuite nous allons ouvrir la console PowerShell Exchange et donner les droits d’import/export à notre utilisateur administrateur grâce à la commande

New-ManagementRoleAssignment –Role "Mailbox Import Export" –User Administrateur

Il faut bien penser à fermer et relancer la console PowerShell pour que les changements prennent effet

b)  Groupe de sécurité

Dans le script suivant je donne les droits au groupe de sécurité qui se nomme Helpdesk

New-ManagementRoleAssignment -Role "Mailbox Import Export" -SecurityGroup HelpDesk

 

3- Exporter des BAL 

a) Une BAL

La commande suivant va nous servir si nous souhaitons exporter le fichier PST d’un utilisateur qui a pour alias dans Exchange yves dans le chemin UNC du dossier que nous venons de créer

New-MailboxExportRequest -Mailbox <alias> -FilePath \\<SERVEUR FQDN>\<DOSSIER>\<alias>.pst

b) Une BAL archive

Si vous voulez exporter une boite mail d’archive vous pouvez utiliser la commande suivante

New-MailboxExportRequest -Mailbox <alias> -FilePath \\<SERVEUR FQDN>\<alias>_archive.pst -IsArchive

c) Toutes les BAL 

Maintenant si nous voulons exporter toutes les boites aux lettres sans exception, nous allons utiliser l’une des deux méthodes suivantes :

  • Méthode 1

On enregistre toutes les boites mails dans une variable

$AllMailboxes = Get-Mailbox

Ensuite on lance l’export

$AllMailboxes|%{$_|New-MailboxExportRequest -FilePath \\<serveur FQDN>\<DOSSIER>\$($_.Alias).pst}

  • Méthode 2
foreach ($Mailbox in (Get-Mailbox)) { New-MailboxExportRequest -Mailbox $Mailbox -FilePath "\\<SERVEUR FQDN>\<DOSSIER>\$($Mailbox.Alias).pst" }

d) Des BAL précises

Si nous souhaitons seulement exporter les PST de 3 utilisateurs il faut

  • Créer un fichier txt qui contient la liste des alias de vos boites aux lettres (un alias par ligne)

  • Créer un script Powershell contenant le code ci-dessous et l’enregistrer sur le bureau
$content = get-content "C:\PST\alias.txt"

foreach ($user in $content) 
{

New-MailboxExportRequest -Mailbox $user -FilePath "\\<SERVEUR FQDN>\<DOSSIER>\$user.pst" 
}
  • Exécuter le script

4 – Importer des Boites aux lettres

Pour importer vos BAL dans le nouveau serveur il faut exécuter la commande suivante

New-MailboxImportRequest -FilePath \\<SERVEUR FQDN>\<DOSSIER>\<oldalias>.pst -Mailbox <newalias>

 

5 – Afficher l’état de votre export/import

a) Export

Si vous voulez suivre la progression de l’exportation du PST en cours vous pouvez utiliser la commande

Get-MailboxExportRequest | Get-MailboxExportRequestStatistics


Si vous voulez avoir les informations détaillées il faut lancer la commande suivante

Get-MailboxExportRequest -Name MailboxExport | fl

Si vous voulez affichez tous les exports terminés

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

Si vous voulez affichez les exports en cours

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

 

b) Import

Si vous voulez suivre la progression de l’importation du PST en cours vous pouvez utiliser la commande

Get-MailboxImportRequest | Get-MailboxImportRequestStatistics

6 – Autres

  • Lister les boites mail d’archives de votre serveur de messagerie
Get-Mailbox -Archive -Server <NOM DU SERVEUR>
  • Lister toutes les boites aux lettre de votre ferme Exchange, avec la taille (Mo) et le nombre d’élément dans chaque boite
Get-MailboxServer | Get-MailboxStatistics | Sort-Object TotalItemSize -Descending | ft DisplayName,StorageLimitStatus,@{label="TotalItemSize(MB)";expression={$_.TotalItemSize.Value.ToMB()}},ItemCount

Pour supprimer les infos de l’exportation

[PS] C:\>Get-MailboxExportRequest | where {$_.status -eq "Completed"} | Remove-MailboxExportRequest