Recherche sur le blog

jeudi 24 septembre 2015

[Exchange] Exporter une boite mail à l'aide d'EMS

Si vous possédez Exchange 2010 SP2 ou supérieur, vous pouvez exporter une boite mail au format PST puis l'importer dans une autre. Cela peut se faire à l'aide d'Exchange Management Shell. Cela nécessite d'abord de créer les permissions pour l'exécution des commandes d'import/export. Vous pouvez vous référer à la documentation Technet #FF45927 pour en apprendre davantage.

Ouvrez d'abord Exchange Management Shell - il s'agit de l'invite de commandes PS dédié -, attendez que la connexion soit établie, puis attribuez les droits pour le rôle d'Import/Export, à l'aide de la commande suivante  : 
New-ManagementRoleAssignment -Role "Mailbox Import Export" 
 -User "Administrateur"
Si vous vous connectez avec un administrateur dans un domaine pour effectuer cette opération, remplacez "Administrateur" par "NOM_DOMAINE\Administrateur". Une fois cette opération effectuée vous devriez voir apparaitre un résumé de ce qui a été attribué. Fermez la fenêtre du shell puis rouvrez-en une.

Exporter

Créez maintenant un dossier partagé sur l'un de vos serveurs (cela peut être un dossier créé en local mais pour lequel on génère un nom de partage). Donnez les droits d'accès complets à l'utilisateur "Exchange Trusted Subsystem". Notre dossier est sur "C:\Export" et a été partagé en tant que \\EWS01\Export\. On y stockera les fichiers *.PST des boites mail.


Une fois le répertoire créé avec les bons droits d'accès, il faut retourner dans l'invite de commandes d'Exchange, et saisir la commande suivante pour lancer une requête d'export. Les paramètres seront le nom d'utilisateur pour lequel on souhaite exporter les données, et le répertoire dans lequel on va stocker le fichier *.PST :
New-MailboxExportRequest -Mailbox JONNY 
 -FilePath \\EWS01\Export\mb_jon.pst
Si la commande aboutit, - cela peut prendre quelques secondes avant qu'elle ne soit validée par le système -, Exchange indiquera que la requête a été "mise en file d'attente" (Statut = Queued). A tout moment on peut obtenir la progression de celle-ci en saisissant la commande suivante, toujours dans l'invite :
Get-MailboxImportRequest
Cette commande va renvoyer le statut en cours : "In Progress" ou encore "Completed" sont les états qui apparaissent généralement. On peut également obtenir plus de détails en complétant la commande comme dans l'exemple ci-dessous :
Get-MailboxImportRequest | fl
Une fois que votre requête est marquée comme "complétée", il faut simplement supprimer la demande dans le système. En utilisant la commande suivante, l'invite vous demandera de confirmer l'effacement. Il faut utiliser la touche "T" suivie de Entrée pour valider.
Get-MailboxExportRequest | where {$_.status -eq "Completed"} 
 | Remove-MailboxExportRequest
Dans l'immédiat on ne sait pas vérifier le contenu du PST, sauf en l'important sur une machine quelconque. Ce qui nous intéresse ici, c'est de l'importer dans une boite mail fraichement créée. Pour cela il va falloir suivre les étapes ci-dessous.

Importer

Une fois le fichier PST créé on peut l'importer dans une autre boite mail. On n'y pense pas mais c'est quand même mieux que de s'amuser à transférer les mails un par un ou de demander à l'utilisateur d'effectuer cette opération qui peut être longue, surtout si la boite contient de nombreux éléments. 
New-MailboxImportRequest -FilePath \\EWS01\Export\mb_jon.pst 
 -Mailbox ALFRED
On va demander au système de créer une requête d'import pour le fichier PST. C'est dans la boite d'Alfred qu'on va importer tous les éléments de Jonny. Il existe de nouveau une commande pour connaitre le statut de la demande. 
Get-MailboxImportRequest
Comme on peut le constater, celle-ci n'est pas très différente de celle utilisée pour l'export. De nouveau on obtient le statut, qui peut être "In Progress" ou encore "Completed". Nous ne connaissons pas tous les états par cœur, mais celui qui nous intéresse est bien sûr le tout dernier. Une fois l'opération signalée comme terminée, il faudra exécuter : 
Get-MailboxImportRequest | where {$_.status -eq "Completed"} 
 | Remove-MailboxImportRequest
De nouveau l'invite demande s'il faut clôturer la (ou les) requête(s). On répond directement à l'aide de la touche "T" pour traiter tous les éléments en une seule fois, puis on appuie sur Entrée. Toutes les requêtes sont alors effacées.

Sources

Exchange Server Pro.

Aucun commentaire: