Exportar buzones de correo de Microsoft 365 con Microsoft Graph PowerShell
El cmdlet Get-MgUserMessageContent con Microsoft Graph PowerShell proporciona un método para exportar correos electrónicos a su máquina local en formato .eml, que cualquiera puede leer. En esta publicación, le mostraré cómo exportar correos electrónicos de forma masiva desde cualquier buzón de Exchange Online (M365) de su organización. Además, cómo filtrar la exportación de correos electrónicos dentro de un determinado rango de fechas y con información específica en la línea de asunto.
Requisitos
Este script utiliza los siguientes módulos de Microsoft Graph PowerShell:
- Autenticación.Microsoft.Graph
- Microsoft.Graph.Mail
También necesitará una cuenta de Administrador global en su inquilino para dar su consentimiento a los siguientes permisos:
- Correo.Leer
Para obtener ayuda con estos requisitos, consulte mi publicación: Cómo instalar el módulo Microsoft Graph PowerShell.
El permiso Mail.Read solo está disponible en el contexto de la aplicación. Para ello, deberá registrar una nueva aplicación en Microsoft Entra y conectarse a ella en el contexto de la aplicación a través de PowerShell. Vea mi publicación Conéctese a Microsoft Graph PowerShell con un secreto de cliente.
Buzón en línea de Backup Exchange
La copia de seguridad de los correos electrónicos de Exchange Online con Microsoft Graph PowerShell solo debe realizarse en ciertos escenarios. Por ejemplo, un usuario abandonó su organización y necesita una copia de sus archivos en formato .eml. O necesita descargar una copia de los correos electrónicos de un usuario entre una fecha determinada.
Puede utilizar el siguiente script para descargar una copia de todos los correos electrónicos en el buzón del usuario (incluidos los archivos adjuntos de los correos electrónicos).
## Define information here
$ApplicationId = ""
$SecuredPassword = ""
$tenantID = ""
$UserID "" #Example: [email
$filepath = "" #Example: C:\temp\
#Connect to Microsoft Graph
$SecuredPasswordPassword = ConvertTo-SecureString `
-String $SecuredPassword -AsPlainText -Force
$ClientSecretCredential = New-Object `
-TypeName System.Management.Automation.PSCredential `
-ArgumentList $ApplicationId, $SecuredPasswordPassword
Connect-MgGraph -TenantId $tenantID -ClientSecretCredential $ClientSecretCredential
#Store all emails
##Add filter if required
$messages = Get-MgUserMessage -UserId $userid -all
#Download all emails
Foreach ($message in $messages) {
$file = ($File = "$($message.subject) $($message.ReceivedDateTime).eml").Split([IO.Path]::GetInvalidFileNameChars()) -join '_'
$outfile = $filepath + $file
try {
Get-MgUserMessageContent -UserId $userid -MessageId $message.id -OutFile $outfile
}
Catch {
LogWrite "Unable to export " $message.Subject
}
}Definición de un rango de fechas para realizar copias de seguridad de los correos electrónicos de Exchange Online
En el caso de que solo desee exportar correos electrónicos entre un determinado rango de fechas, puede utilizar consultas de filtro para limitar sus resultados.
A continuación, he combinado dos filtros usando el operador AND para exportar solo correos electrónicos entre el 1 y el 9 de enero.
Get-MgUserMessage -UserId $userid -all `
-filter "ReceivedDateTime ge 2024-01-01 AND ReceivedDateTime le 2024-01-09"Este filtro se puede ampliar aún más para incluir mensajes que tengan una determinada cadena de texto en la línea de asunto. Por ejemplo:
He utilizado la comilla invertida `, para que sea legible sin necesidad de desplazarse.
Get-MgUserMessage -UserId $userid -all `
-filter "ReceivedDateTime ge 2024-01-01 AND ReceivedDateTime le 2024-01-09 `
AND contains(Subject, 'New Device')" `
| Select Subject, ReceivedDateTimeTerminando
La descarga masiva de archivos de mensajes de correo electrónico no debe considerarse como una única solución de "copia de seguridad" para almacenar el correo de los usuarios que han abandonado la empresa. Aún así debería considerar una solución de respaldo de terceros y/o mantener el buzón como buzón compartido. Sin embargo, proporciona una solución conveniente para exportar correos electrónicos masivos en caso de una copia de seguridad, una investigación o un motivo de cumplimiento.

