Office 365: unire più caselle di posta elettronica su Exchange Online

| |

Non è cosa che dovrebbe accadere così spesso, ma può succedere che ti serva eliminare una casella di posta “di troppo” senza però perderne il contenuto, da spostare su una diversa casella di posta che continuerà invece a funzionare. Fare l’operazione in maniera “manuale” spostando tutto tramite Outlook può essere davvero oneroso (in termini di tempo) e papabilmente disastroso (perché ci si può distrarre facilmente, non spostare del materiale e cancellare la casella troppo presto), meglio passare da qualcosa di più automatizzato e che possa facilmente sostituirti, PowerShell torna utile ancora una volta.

PowerShell e Office 365: recupero della posta cancellata 2

Merge delle caselle di posta su Exchange Online

Ti lascio un paio di riferimenti per iniziare a introdurre l’argomento:

Si parla di metodi manuali e di automatizzazione delle operazioni, che poi è la strada che ho scelto di percorrere.

Utilizza PowerShell

Stavolta non è merito mio, lo script esiste già e funziona correttamente, scritto e pubblicato da David Barrett (Microsoft) sul repository del colosso di Redmond: gallery.technet.microsoft.com/exchange/Merge-mailbox-folders-cf1e9576. Avrai bisogno di EWS e delle sue API (da installare localmente sul tuo PC: microsoft.com/en-us/download/details.aspx?id=35371), al resto penserà lo script, compresa l’attesa forzata quando le operazioni di spostamento dei contenuti da una casella di posta all’altra inizieranno a diventare numerose.

Del codice e del funzionamento dello script se ne parla in maniera abbastanza approfondita qui: code.msdn.microsoft.com/office/PowerShell-Merge-mailbox-e769c529. I parametri di base da conoscere sono – grosso modo – questi:

-SourceMailbox Serve a specificare la casella sorgente dalla quale copiare i dati.
-TargetMailbox Serve a specificare la casella di destinazione verso la quale copiare / spostare i dati.
-SourcePublicFolders Serve a specificare se copiare (dalla sorgente) le cartelle pubbliche.
-TargetPublicFolders Serve a specificare se copiare (sulla destinazione) le cartelle pubbliche.
-ProcessSubFolders Se utilizzato, lo script cercherà le email in tutte le cartelle e sottocartelle.
-CreateTargetFolder Se utilizzato, lo script ricreerà la struttura cartelle nella casella di destinazione (vale per le cartelle non esistenti).
-Delete Se utilizzato, lo script tenterà di cancellare le cartelle rimaste vuote nella casella di posta sorgente.
-Copy Se utilizzato, lo script copierà le email lasciando le originali nella casella di posta sorgente.
-Credential Il parametro accetta PSCredentials per l’autenticazione su Exchange (dovrai prima lanciare un Get-Credential). Il parametro non potrà essere utilizzato se hai l’autenticazione a due fattori attiva sul tuo account.
-OAuth Utilizza questo parametro per autenticarti con la Modern Authentication di Microsoft (necessaria se il tuo account è protetto da 2-Step Auth.).
-EwsUrl L’indirizzo dell’endpoint EWS. Se non specificato verrà cercato tramite autodiscover. Posso dirti che per Office 365 vale direttamente https://outlook.office365.com/EWS/Exchange.asmx

Di parametri in realtà ne esistono molti di più, ma per il mio specifico caso non ho avuto bisogno di null’altro, forse varrà la stessa cosa anche per te. In pratica ho potuto lanciare uno spostamento completo del contenuto di una casella all’altra in questa maniera:

Merge-MailboxFolder.ps1 -SourceMailbox sharedmailbox@contoso.onmicrosoft.com -TargetMailbox usermailbox@contoso.com -ProcessSubfolders -CreateTargetFolder -Delete -EwsUrl "https://outlook.office365.com/EWS/Exchange.asmx" -OAuth

Tutto il contenuto della Shared Mailbox confluirà all’interno della casella di posta dell’utente, finendo nelle medesime cartelle (quelle non esistenti verranno create) e non lasciando traccia sulla sorgente, dalla stessa verranno poi cancellate le cartelle vuote. Utilizzo l’autenticazione moderna di Microsoft per riuscire a passare indenne il check della 2-Step Auth., dando un OK sul mio dispositivo di conferma autenticazione. A questo punto lo script comincerà ad analizzare la casella sorgente e copierà / sposterà i dati verso la destinazione stabilita.

Office 365: unire più caselle di posta elettronica su Exchange Online 1

Non preoccuparti se di tanto in tanto vedi stuole di errori a video, le email stanno comunque muovendosi da un lato all’altro rispettando tempi e limiti del collegamento PowerShell con EWS, puoi nel frattempo svolgere un differente lavoro e tornare a controllare di tanto in tanto il merge.

Office 365: unire più caselle di posta elettronica su Exchange Online 2

Aggiungo che – sporadicamente – può capitare che delle cartelle in profondità (sottocartelle di ulteriori sottocartelle, per dire) non vengano immediatamente viste e fatte muovere, per questo motivo ti consiglio di:

  • tenere sempre aperta una finestra del browser puntandola all’interfaccia WebMail della casella sorgente (apri anche quella di destinazione, giusto per sicurezza).
  • Far girare più volte lo script fino a quando questo terminerà senza aver più trovato nulla.

Non dovrei aver dimenticato nulla. Nel caso in cui ci siano dubbi o tu avessi necessità di ulteriori informazioni non esitare a lasciare un commento.

Buon lavoro!

×

Attenzione

Office 365: unire più caselle di posta elettronica su Exchange Online 1Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Gioxx's Wall

Se hai correzioni o suggerimenti puoi lasciare un commento nell'apposita area qui di seguito o contattarmi privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! Satispay / PayPal / Buy Me A Coffee / Patreon

Condividi l'articolo con i tuoi contatti: