Porque se pasan nuestros buzones al estado de soft-delete,¿ que podemos hacer en estos casos?
Existen varios motivos por el cual debemos tomar acciones frente a esta situación, si tenemos nuestros buzones en estado de In-Place Hold and Litigation Hold o bajo una política de retención, o simplemente expiró nuestra licencia o suscripción en nuestro tenant, o tan solo se trata de una situación controlada pero nos vimos obligados a mover nuestro dominio de un tenant a otro y llegó el momento de que todos estos buzones tengan un backup histórico frente a un reclamo legal, para estos casos les explicaré que debemos hacer y cómo actuar.
Según mi experiencia puedo contarles que tuve todo el respaldo de Microsoft, por ejemplo me contacté con el área de facturación para no generarle más gastos a mi compañía en solicitar un pack de licencias por 250 bajo un periodo de 3 meses, al considerar que se trataban de casi 1000 cuentas debería ver cómo llevar adelante esto lo más rápido posible.
NOTA: un buzón en estado de Soft-Delete Microsoft puede comenzar a eliminarlo a partir de los 30 días, ahora si nosotros contábamos con una política de retención o Litigation Hold podemos conseguir un poco más de dias pero no está documentado cuantos dias, solo se trata de conservar más tiempo que lo habitual, esto cambia todo el tiempo, deberán consultarlo en el momento que les ocurra a ustedes.
A continuación para no aburrirlos mas ya que pueden encontrar mucha información en los sitios oficiales de Microsoft, esa parte se las dejo a ustedes y ahora pongamos manos a la obra de qué hacer.
Primer punto: automatizar dicha tarea mediante script en powershell, involucrando a un excel como intérprete de como actúa dicho script para poder capturar los datos y registrarlo para nuestro control.
Sugerencia dependiendo donde se encuentre su tenant en mi caso para que el script corra sin que aparezcan errores se le agregó el Start-Sleep -Seconds 5 con esto lo que se logra es evitar un tiempo o error de latencia, porque al momento transcurren muchas cosas, por ejemplo si se dispara el script con la creación de 250 cuentas el mismo debe tener un tiempo de proceso estimado para no tener errores de respuesta en tiempo de ejecución, con esto se logra. Lo podrán ajustar en caso necesario. todo el script consta de 5 etapas, 1- crea los buzones, 2- luego asigna la ubicación geográfica para poder asignarle la licencia y a su vez asigna dicha licencia de manera automática, 3- luego realiza el restore de los buzones, 4-pasamos a correr un job de backup, cuando el backup haya terminado. 5- correremos otro script el cual realizará el Remove Licenses para poder recuperar la licencias y continuar con el resto de los buzones.
Segundo punto: como hacer el backup histórico, de esta forma seguramente nuestro gerente estaría más tranquilo a futuro si llevamos adelante dicha tarea respaldada con un backup histórico.
Para llevar adelante el primer punto es necesario contar con los permisos necesarios al Tenant de nuestra suscripción de Office 365 el cual será necesario establecer la conexión mediante Exchange Online PowerShell el propósito en este apartado es brindarle la solución automatizada sobre un script, el tema de la conexión contra el tenant se los dejo para que lo vean ustedes mismos para no involucrar información sensible ya que dado si no lo saben con abrir un ticket en Microsoft estoy seguro que los podrán guiar.
A continuación iré mostrando como funciona el script para el restore de buzones, el mismo consta de varias etapas, lo primero es crear los buzones para esto va a depender de tener el csv cuando consultemos los correos en estado de soft-delete, él mismo luego lo deberemos guardar como xlsx
Para generar dicho archivo una vez conectado con el Exchange Online en la ventana de PowerShell ejecutamos lo siguiente:
Exportar listado de todos los buzones en estado de soft-delete:
Copiar el código en caso de no tenerlo: Get-Mailbox -SoftDeletedMailbox |Select Name,ExchangeGuid,WindowsLiveID,alias |export-csv restorebuzonez.csv -NoTypeInformation -Encoding Unicode
IMPORTANTE: para poder realizar el restore de un buzón en estado de soft-delete será necesario contar con el SourceMailbox este mismo es el que hallaremos en nuestro excel antes creado, hace referencia a los buzones existentes viejos que luego cuando creamos el nuevo buzón en una variable es almacenado en un archivo demo.csv aqui esta el TargetMailbox este es el destino donde se realizará el restore completo del buzón con un nombre distinto, al final le agregaré al nombre ya existente una fecha 2021:por ejemplo: Buzón anterior contodocasas@contodo.com y nuevo buzón contodocasas2021@contodo.onmicrosoft.com esto estará automatizado pero es bueno saberlo en caso de realizarlo de manera manual.
Hacer el restore de la casilla borrada en la casilla creada, para eso necesitamos los datos obtenidos de ExchangeGUID del source y del target Mailbox
Copiar el código en caso de no tenerlo: New-MailboxRestoreRequest -SourceMailbox 4026687f-3ce9-455e-a012-203ab3de1695 -TargetMailbox 6c3914b4-0420-47bb-8d2a-77b536ebd3b1 -AllowLegacyDNMismatch
Revisar si se completó el restore
Copiar el código en caso de no tenerlo: Get-MailboxRestoreRequest |Get-MailboxRestoreRequestStatistics
a continuación procederé con la explicación del código utilizado.
Código Script línea 2 a 15
Creación de funciones que luego usaremos en el desarrollo del script. La primera cierra el Excel® proveniente del Informe de Soft-Delete. La segunda se usará para adicionar renglones/párrafos al archivo log que genera el script.
Código Script línea 15 a 31
Aquí procedemos verificar la existencia del archivo de log que usaremos para mostrar el resultado del script, si no existe lo creamos en blanco [líneas 16 a 18] Siguiendo, abrimos la ventana de diálogo de File Open en busca de nuestro archivo de datos, lo abrimos y seleccionamos la Hoja1, también definimos el rango de filas/columnas con datos; guardamos en variable $Filas la cantidad de filas con datos a procesar [línea 31]
Código Script línea 32 a 40
Por un problema de latencia es necesario procesar una determinada cantidad de renglones por vez, por ello [línea 32] establecemos la última fila a procesar. O sea, correremos en script varias veces con cantidad de renglones convenientes hasta llegar a la totalidad. En [línea 32] creamos una cadena de 100 caracteres y seguidamente guardamos en variable $cadpass la guardamos diez veces obteniendo una longitud de mil caracteres. La finalidad es generar los passwords de cuentas en forma aleatoria. En [línea 35] comenzamos un ciclo For…Next para leer desde la fila siguiente a la pasada anterior hasta la que designamos recientemente, comenzamos a leer de la hoja de Excel® verificando que la celda tenga datos [línea 37] , se genera un pass comenzado en $iniPath y con una longitud de $longpass
Código Script línea 42 a 66
Termino de leer celdas de Excel® en [línea 42 a 44],realentizo levemente el proceso [línea 45], genero una nueva cuenta para los datos de aquella borrada en un Tray Catch [línea 46 a 63] En [línea 64 a 66] vuelco en filas de Spreedsheet los datos de la cuenta creada
Código Script línea 68 a 85
Siempre con el Método Try..Catch agregó la localidad de la nueva cuenta creada
Código Script línea 88 a 106
Siempre con el método Try..Catch agrego la licencia de la nueva cuenta creada también lo anoto en la Spread
Código Script línea 111 a 143
Último Tramo. vacío mi archivo demo.csv y lo lleno nuevamente con los datos del MailBox para el $NewId única forma de encontrar el nuevo ID que usaré para el restore de ID viejo, de esta forma recupero los correos de la cuenta de Soft-Delete. Todo esto para cada fila de la SpreedSheet. Al finalizar cierro el archivo Excel®
5- Remove Licenses para poder recuperar la licencias y continuar con el resto de los buzones, en este punto corremos otro script que llama al Excel, se fija las cuentas restauradas y procede en sacar las licencias agregando la leyenda en el Excel concluido.
Les paso a continuación el Script para su mayor interpretación:
Código Script línea 2 a 33
Para el caso de tener que reutilizar las licencias disponibles a otros usuarios se usa este script que quita las licencias otorgadas con el script anterior, cuyo único fin fue recuperar los correos existentes en sus respectivos buzones.
Luego usaremos en el desarrollo del script. La primera cierra el Excel® proveniente del Informe de Soft-Delete, La segunda se usará para adicionar renglones/párrafos al archivo log que genera el script. Se solicita la ubicación del archivo de Excel con los datos de las cuentas recuperadas. Como en el primer script y por posibles inconvenientes de latencia lo efectuamos en ciclos de 140 a 150 renglones [línea 33] aquí se tomaron 200.
Código Script línea 36 a 72
Leemos cada fila de Excel para obtener los Id_Usuario que guarda en la variable en la [línea 43] y en la [línea 47] quito la licencia. Con el objetivo de documentar el ciclo escribo en el Excel columna 10 [línea 67]
Segundo punto: como hacer el backup histórico, En este punto les sugiero realizarlo una a través de alguna solución de Backup. por ejemplo: (Backup Exec), (Veeam) y (CodeTwo).
Confío que la información presentada les resulte al menos de guia de todo lo que se puede llegar a hacer ante la situación de Soft-Delete, en caso de dudas pueden consultarme sin ningún inconveniente. Contacto.
Descargar archivo