[Exchange Server 2013] Importar Exportar Buzones a PST

A partir de la versión 2010 de exchange server, se puede usar el cmdlet New-MailboxExportRequest para exportar el contenido de un buzón a un fichero .PST. Si intentamos ejecutar este comando  a través de la consola PowerShell, es posible que nos lance un error indicandonos que el comando no es valido. Esto es debido a que este comando solo puede ser usado por aquellos usuarios que tengan el role “MailBox Import Export“. Por ejemplo, podemos incluirlo en el role group  “Organization Management“.

Esto se puede hacer usando la interfaz ECP.

1. Nos vamos a la sección “Permisos“,

RoleGroup

2. Editamos el role group “Organization Management

RolesOrganizationManagement

3. En la seccion “Roles” hacemos clic en el botón “+” para añadir el role “Mailbox Import Export

AgregarRole

Este proceso también se puede hacer usando la sentencia PowerShell New-ManagementRoleAssignment


New-ManagementRoleAssignment -Name "MailboxImportExport" -SecurityGroup "Organization Management" -Role "Mailbox Import Export"

En este punto ya podemos iniciar el proceso de exportación. El siguiente comando muestra la sentencia para exportar el buzón pruebas@contoso.com


new-mailboxexportrequest -mailbox pruebas@contoso.com -filepath "\\Server\Exchange\Copias PST\pruebas.pst"

Podemos usar el parámetro “ContentFilter” para filtrar aquellos mensajes que tengan una o varias cadenas de texto en el cuerpo del mensaje. Por ejemplo, para filtrar los mensajes que tengan la palabra ProgrammingApps y Exchange, y que se hayan recibido a partir del 01/01/2015


New-MailboxExportRequest -Mailbox pruebas@contoso.com -ContentFilter {(body -like "*ProgrammingApps*") -and (body -like "*Exchange*") -and (Received -lt "01/01/2015")} -FilePath "\\Server\Exchange\Copias PST\PruebasFiltrado.pst"

Para consultar el estado del proceso de la exportación, debemos lanzar el comando Get-MailboxExportRequest


Get-MailboxExportRequest

si hubiese varios procesos de exportación, podemos usar el parámetro “Mailbox” para filtrar por un buzón concreto.


Get-MailboxExportRequest -Mailbox pruebas@contoso.com

En el resultado por defecto, se muestra la columna “Status“, cuyos posibles valores son:

  • AutoSuspended
  • Completed
  • CompletedWithWarning
  • CompletionInProgress
  • Failed
  • InProgress
  • None
  • Queued
  • Suspended
  • Synced

Si tuviésemos que exportar múltiples buzones, podemos crear un script powershell con multiples sentencias New-MailboxExportRequest o lanzar el siguiente script powershell


get-mailbox -server [CONTOSO] | foreach {$buzon = $_.name 
new-mailboxexportrequest -mailbox $buzon -filepath "\\Server\Exchange\Copias PST\$buzon.pst"}

el cual recupera todos los buzones del servidor CONTOSO y los exporta a una carpeta compartida de un servidor.

Nota: Hay que tener en cuenta que este script puede llegar a saturar el servidor, ya que todas las tareas de exportación son lanzadas en paralelo. 

Si necesitamos cancelar el proceso de exportación, podemos usar el comando powershell Remove-MailboxExportRequest. Este comando también se puede usar para limpizar las tareas de exportación completadas correctamente


Get-MailboxExportRequest -Status Completed | Remove-MailboxExportRequest

Por último, el proceso de importación se puede realizar invocando al comando New-MailboxImportRequest.Por ejemplo, para importar un fichero .pst al buzón “pruebas2@contoso.com”


New-MailboxImportRequest -Mailbox pruebas2@contoso.com -FilePath "\\Server\Exchange\Copias PST\Pruebas.pst"

Para consultar el estado de las tareas de importación, debemos lanzar el comando Get-MailboxImportRequest


Get-MailboxImportRequest

si hubiese varios procesos de importacion, podemos usar el parámetro “Mailbox” para filtrar por un buzón concreto.


Get-MailboxImportRequest -Mailbox pruebas@contoso.com

Con este proceso de exportación e importación, hemos realizado una copia de los mensajes de un buzón a otro buzón.