Quando elimini una casella di posta elettronica di un utente Microsoft 365, questa viene eliminata in modalità “soft-delete”, rimarrà perciò nel nel cestino per 30 giorni, per permetterti di recuperarla in caso di errore di distrazione o ripensamenti :-)
Ci sono casi in cui, però, potresti aver bisogno di lasciare lì quella casella, ma recuperare gli elementi al suo interno e portarli a bordo di una differtente casella di posta sul medesimo tenant. Per questo esiste New-MailboxRestoreRequest.
Ho già usato questa procedura con successo in passato, per un “cambio di identità” e una fusione di elementi tra due caselle di tipo diverso (una casella di posta elettronica personale e una condivisa – Shared Mailbox), oggi mi è toccato utilizzarla ancora per sanare una situazione di conflitto tra un utente sincronizzato su Entra e una casella di posta condivisa che sarebbe dovuta diventare ‘personale“, ho quindi deciso di riportare qualche passaggio qui sul blog, prendendo ampiamente spunto da un articolo già esistente di Ali Tajran (che dovresti seguire, se già non lo fai), per facilitarmi la vita.
Possibili scenari
Dopo aver eliminato una casella di posta (perciò in stato di soft-delete lato Exchange in Cloud), potrai ripristinare i messaggi su qualsiasi casella attiva entro 30 giorni, utilizzando PowerShell.
Un paio di scenari possibili ai quali questo articolo si applica perfettamente:
- hai eliminato per errore una cassetta postale e ne hai creata una nuova per l’utente: puoi recuperare i vecchi messaggi e copiarli sulla nuova casella.
- Hai un dipendente che torna e desidera trasferire i messaggi dal vecchio account eliminato al nuovo.
Se, invece, hai bisogno di recuperare messaggi sulla stessa casella, puoi usare il recupero degli elementi eliminati integrato nativamente in Microsoft 365 e Outlook. Non è questo il metodo adatto da applicare, puoi evitare di proseguire la lettura :-)
Inizio delle operazioni
Per procedere dovrai essere connesso (via PowerShell) a Exchange Online, apri PowerShell e lancia Connect-ExchangeOnline, autenticandoti se e quando richiesto.
Verifica la casella di posta eliminata
Baso il mio esempio sull’utente Mario.Rossi@contoso.com. Quello che dovrai fare, è accertarti che la casella sia in stato di “soft-delete”, senza il quale non potremmo in nessun caso andare avanti (questo perché il cmdlet New-MailboxRestoreRequest si applica solo a caselle disabilitate o eliminate:
Get-Mailbox -SoftDeletedMailbox "Mario.Rossi@contoso.com"
Dovresti ottenere un output simile a questo, diversamente vuol dire che la casella non è nello stato corretto o è già andata oltre i 30 giorni per il possibile recupero:
Name Alias Database ProhibitSendQuota ExternalDirectoryObjectId ---- ----- -------- ----------------- ------------------------- Mario Rossi Contoso_Mario… EURPR07DG170-db011 49.5 GB (53,150,220… a7545890-3d11-4dde-8b4e-060312c6ed11
Recupera i GUID
Info
Io sto dando per scontato che tu abbia già una nuova casella di posta elettronica verso la quale migrare. Nell’articolo originale di Ali, invece, si parla di creazione e anche di attivazione dell’archivio in-place nel caso in cui la casella originale (quella eliminata) lo aveva a disposizione. Io sto riassumendo mettendoti davanti a uno scenario forse più comune nella quotidianità.
Recupera il GUID di entrambe le caselle di posta elettronica. Ti serviranno per evitare errori dovuti a indirizzi potenzialmente duplicati nel momento in cui passerai alla nuova richiesta di ripristino elementi, te lo spiego meglio tra qualche riga.
Parti con il GUID della vecchia casella, quella eliminata:
Get-Mailbox -SoftDeletedMailbox "Mario.Rossi@contoso.com" | Format-List Alias,ExchangeGuid
Poi quella di “destinazione“, quella all’interno della quale ti stai preparando a ripristinare “tutti” gli elementi di quella eliminata (ho volutamente virgolettato “tutti” perché non è proprio così, non necessariamente):
Get-Mailbox "Nuovo_Mario.Rossi@contoso.com" | Format-List Alias,ExchangeGuid
Tienili entrambi da parte, ti servono tra pochissimo, ma prima – rispetto all’articolo originale – ti propongo una minima deviazione per approfondire proprio la questione del ripristino di tutto contro quello più selettivo.
Preparati al ripristino
La documentazione ufficiale di New-MailboxRestoreRequest si trova all’indirizzo learn.microsoft.com/en-us/powershell/module/exchangepowershell/new-mailboxrestorerequest. Leggendola, potrai notare tu stesso che mette a disposizione una serie di parametri opzionali che potrebbero tornarti molto utili per andare ad affinare la specifica richiesta di ripristino dati che stai trovandoti ad affrontare.
Se dovessimo eseguire un ripristino completo dei dati dalla casella eliminata a quella di destinazione, basterebbe lanciare il comando “di base“:
New-MailboxRestoreRequest -SourceMailbox "<GUID_casella_eliminata>" -TargetMailbox "<GUID_nuova_casella>" -AllowLegacyDNMismatch
E questo partirebbe entro qualche secondo (salvo errori o problemi sulla piattaforma di Microsoft). Ma se, invece, hai bisogno di qualcosa di leggermente diverso, potresti – per esempio – andare a limitare le cartelle da recuperare, lasciando nella caselle eliminata quelle che certamente non hai necessità che vengano “tratte in salvo“. Per farlo ti basterà dire al cmdlet cosa escludere:
New-MailboxRestoreRequest -SourceMailbox "<GUID_casella_eliminata>" -TargetMailbox "<GUID_nuova_casella>" -AllowLegacyDNMismatch -ExcludeFolders #Calendar#,#Contacts#,#Journal#, #Tasks#, #Notes#, #JunkEmail#, #CommunicatorHistory#, #Voicemail#, #Fax#, #Conflicts#, #SyncIssues#, #LocalFailures#, #ServerFailures#
Già solo questo lascia indietro tutta quella serie di cartelle che potenzialmente non ti servono, perché nella casella di posta elettronica di destinazione magari hai bisogno solo ed esclusivamente di passare le vecchie e-mail (inviate / ricevute / ecc.). Potresti, in aggiunta, decidere che tutto ciò che viene ripristinato finisca in una cartella in particolare, all’interno della quale verrà poi ricreata una struttura che riproponga fedelmente quella recuperata dalla casella di posta eliminata, il parametro è -TargetRootFolder, quindi, volendolo applicare al comando che ti ho inserito poco sopra, potrebbe farlo diventare:
New-MailboxRestoreRequest -SourceMailbox "<GUID_casella_eliminata>" -TargetMailbox "<GUID_nuova_casella>" -AllowLegacyDNMismatch -TargetRootFolder "Ripristino vecchia casella" -ExcludeFolders #Calendar#,#Contacts#,#Journal#, #Tasks#, #Notes#, #JunkEmail#, #CommunicatorHistory#, #Voicemail#, #Fax#, #Conflicts#, #SyncIssues#, #LocalFailures#, #ServerFailures#
Se hai dubbi sui nomi delle cartelle da escludere, ti consiglio di dare un’occhiata alla specifica voce della documentazione: learn.microsoft.com/en-us/powershell/module/exchangepowershell/new-mailboxrestorerequest?#-excludefolders.
Controlla come sta andando
Puoi farlo in qualsiasi momento lanciando un Get-MailboxRestoreRequest | Format-List. Ti mostro un output di esempio basato sul mio caso:
SourceDatabase : EURPR07DG123-db123
TargetMailbox : New Mario Rossi
Name : MailboxRestore
RequestGuid : a12da3b4-56d7-89fa-a10f-1112ac131aa5
RequestQueue : EURPR07DG123-db123
ExchangeGuid : 00000000-0000-0000-0000-000000000000
Flags : IntraOrg, Pull
WorkloadType : None
BatchName :
Status : InProgress
Protect : False
Suspend : False
Direction : Pull
RequestStyle : IntraOrg
OrganizationId : EURPR07A009.PROD.OUTLOOK.COM/Microsoft Exchange Hosted Organizations/contoso.onmicrosoft.com -
EURPR07A009.PROD.OUTLOOK.COM/ConfigurationUnits/contoso.onmicrosoft.com/Configuration
SourceMailboxSize :
MailboxRopCount :
WhenChanged : 19/09/2025 11:04:27
WhenCreated : 19/09/2025 11:03:58
WhenChangedUTC : 19/09/2025 09:04:27
WhenCreatedUTC : 19/09/2025 09:03:58
Identity : New Mario Rossi\MailboxRestore
IsValid : True
ObjectState : Unchanged
Se vuoi invece focalizzarti sulla ricerca di errori, allora ti conviene invece qualcosa di più specifico:
Get-MailboxRestoreRequest -Status Failed | Get-MailboxRestoreRequestStatistics -IncludeReport | Format-List
Se per un qualsivoglia motivo tu avessi necessità di eliminare le richieste di ripristino dati, potrai semplicemente lanciare un Get-MailboxRestoreRequest | Remove-MailboxRestoreRequest.
In conclusione
New-MailboxRestoreRequest è un prezioso alleato che ti permette di districarti in situazioni potenzialmente spinose. È la seconda volta che mi trovo a doverlo usare e mi ha tolto castagne dal fuoco che avrei dovuto risolvere in maniere più fantasiose e certamente meno pulite se non fosse esistito il cmdlet ad-hoc.
In caso di errori, dubbi, boiate riportate in articolo sai già cosa fare, l’area commenti è a tua totale disposizione :-)
#KeepItSimple