En algunas ocasiones es necesario mover elementos entre las carpetas de un buzón de Exchange Online ya sea por algún requerimiento del usuario.
Otro escenario común es que el usuario haya eliminado todos los elementos de una carpeta por ejemplo "Elementos enviados" y éstos se movieron a la carpeta de "Elementos eliminados", sin embargo, el problema real ocurre cuando son miles de elementos y si se realiza desde la interfaz gráfica (cliente de Outlook o Outlook Web App) ya que solo podemos mover o arrastrar a la carpeta donde originalmente estaban los elementos en bloques de 50 elementos.
Para este caso tenemos una solución bastante sencilla si realizamos esta tarea utilizando PowerShell.
Para lograr esta tarea vamos a seguir los siguientes pasos:
Vamos a instalar el módulo de Microsoft Graph utilizando los siguientes comandos en PowerShell:
Install-Module Microsoft.Graph Import-Module Microsoft.GraphComo administrador del tenant de Microsoft 365, debemos de tener los permisos necesarios sobre el buzón con el que vamos a trabajar, para lograr esto vamos a ejecutar los siguientes comandos:
# En Exchange Online PowerShell (modulo ExchangeOnlineManagement) Connect-ExchangeOnline Add-MailboxPermission -Identity usuario@dominio.com -User tu.admin@dominio.com -AccessRights FullAccess -AutoMapping:$falseAhora una vez que tenemos los permisos sobre el buzón con el que vamos a trabajar, nos conectamos a Microsoft Graph para utilizar el comando para mover la información:
# Conectar con los permisos correctos Disconnect-MgGraph -ErrorAction SilentlyContinue Connect-MgGraph -Scopes "Mail.ReadWrite Mail.ReadWrite.Shared offline_access"Una vez conectados con Microsoft Graph ejecutamos los siguientes comandos para comenzar a mover la información, en este caso vamos a utilizar el ejemplo donde el usuario eliminó todo el contenido de la carpeta de "Elementos enviados" y éstos ahora se encuentran en la carpeta de "Elementos eliminados"
$UserId = "usuario@dominio.com" $deletedFolder = (Get-MgUserMailFolder -UserId $UserId -MailFolderId "DeletedItems") $sentFolder = (Get-MgUserMailFolder -UserId $UserId -MailFolderId "SentItems") Get-MgUserMailFolderMessage -UserId $UserId -MailFolderId $deletedFolder.Id -All -PageSize 50 | ForEach-Object { Move-MgUserMessage -UserId $UserId -MessageId $_.Id -DestinationId $sentFolder.Id }
Notas importantes:
- Usa siempre los nombres de carpeta en inglés: DeletedItems, SentItems, Inbox, etc. aunque en Outlook aparezcan en español.
- -All con -PageSize permite traer todos los mensajes.
Esperamos que esta guía sea de utilidad y como siempre si requieres ayuda adicional por favor envíanos un ticket para que nuestros ingenieros puedan ayudarte.
La ayuda está disponible solo para clientes de SAS CLOUD.
0 comentarios
El artículo está cerrado para comentarios.