Trasferimento Mailbox Exchange 2007 tra Organization differenti

Per eseguire la migrazione delle mailbox tra diverse Organization di Exchange 2003 è possibile utilizzare la Exchange Migration Wizard, per quanto riguarda invece la stessa manovra verso Exchange 2007 non è necessario l’utilizzo di nessun componente aggiuntivo, Exchange 2007 possiede nativamente tutti i meccanismi per eseguire questa operazione, mediante il cmdlet powershell move-mailbox.

I requisiti per eseguire l’operazione sono i seguenti:

Source server:

  • Exchange 2000 (SP3 o successivo)
  • Exchange 2003 (SP1 o successivo)
  • Exchange 2007

Target Server:

  • Exchange 2003 (SP1 o successivo)
  • Exchange 2007  

Di seguito riporto il comando powershell per eseguire lo spostamento delle mailbox in differenti scenari:

Come prima cosa occorre impostare le credenziali dell’account utilizzato per accedere al source server e quelle da utilizzare per accedere al target server, per eseguire questa operazione si possono recuperare le informazioni degli account mediante il cmdlet get-credential salvandone il contenuto in una variabile:

$s = get-credential
$t = get-credential

($s per il Source account e $t per il Target account)

 

Esempio 1: Il seguente comando esegue il move delle mailbox in clone mode (specificato dal parametro NTAccountOU) usando uno specifico Global Catalog e Domain controller (parametri SourceForestGlobalCatalog, GlobalCatalog e DomainController). Viene eseguito il move di 8 mailbox contemporaneamente (-MaxThreads 8) e al termine l’account sorgente verrà eliminato (-SourceMailboxCleanupOptions DeleteSourceNTAccount). Il parametro -ReportFile specifica il percorso ed il nome del file XML di log:

get-mailbox -DomainController ‘forestAdc1.extest.com’ -Credential $s -database ‘Server1DatabaseA’ | move-mailbox -TargetDatabase ‘Server2Database1’ -Identity ‘testMailbox1’ -SourceForestGlobalCatalog ‘forestA.extest.com’ -GlobalCatalog ‘forestB.extest.com’ -DomainController ‘forestBdc1.extest.com’ -NTAccountOU ‘OU=UsersOU, DC=forestB, DC=extest, DC=com’ -MaxThreads 8 -SourceMailboxCleanupOptions DeleteSourceNTAccount -SourceForestCredential $s -TargetForestCredential $t -ReportFile “C:LogsmigrationReport.xml”

 

Esempio 2: Il seguente comando esegue il move delle mailbox in clone mode (specificato dal parametro NTAccountOU) usando uno specifico Global Catalog e Domain controller (parametri SourceForestGlobalCatalog, GlobalCatalog e DomainController). Il Parametro PreserveMailboxSizeLimit fa si che vengano migrate le mailbox mantenendo gli stessi limiti impostati sulle mailbox di partenza. Questo esempio utilizza anche l’opzione IgnorePolicyMatch eseguendo il move delle mailbox senza cercare di eseguire il matching delle policy relative a Managed Folder, Unified Messaging e Activesync perdendo questo settaggio (da notare che di default move-mailbox tenta di eseguire il matching tra il nome delle policy applicate alla mailbox di partenza con il nome delle policy applicate alla mailbox di destinazione, se il matching non va a buon fine il move-mailbox fallisce. Il comando termina con la cancellazione della mailbox sorgente, non il relativo account AD:

get-mailbox -DomainController ‘forestAdc1.extest.com’ -Credential $s -database ‘Server1DatabaseA’ | move-mailbox -TargetDatabase ‘Server2Database1’ -Identity ‘testMailbox1’ -SourceForestGlobalCatalog ‘forestA.extest.com’ -GlobalCatalog ‘forestB.extest.com’ -DomainController ‘forestBdc1.extest.com’ -NTAccountOU ‘OU=UsersOU, DC=forestB, DC=extest, DC=com’ -PreserveMailboxSizeLimit -IgnorePolicyMatch -SourceMailboxCleanupOptions DeleteSourceMailbox -SourceForestCredential $s -TargetForestCredential $t


Esempio 3: Il seguente comando esegue il move delle mailbox in merge modo (specificato dal parametro AllowMerge) utilizzando uno specifico Global Catalog e Domain Controller (parametri SourceForestGlobalCatalog, GlobalCatalog e DomainController). Questo comando è utile se le mailbox nell’organization di destinazione esistono e contengono già del materiale. Questo comando inoltre esegue il move degli items compresi nell’intervallo specificato medianti i parametri -StartDate and –EndDate. Visto che si tratta di una operazione di merge, non viene eseguita nessuna operazione di cancellazione sulle mailbox della organization sorgente

get-mailbox -DomainController ‘forestAdc1.extest.com’ -Credential $s -database ‘Server1DatabaseA’ | move-mailbox -TargetDatabase ‘Server2Database1’ -Identity ‘testMailbox1’ -SourceForestGlobalCatalog ‘forestA.extest.com’ -GlobalCatalog ‘forestB.extest.com’ -DomainController ‘forestBdc1.extest.com’ -AllowMerge -StartDate ’01/10/06′ -EndDate ’01/11/06′ -SubjectKeywords “Exchange” -RetryInterval 5 -RetryTimeout 90 -SourceForestCredential $s -TargetForestCredential $t

 

Di seguito altri esempi per eseguire il move delle mailbox tra foreste differenti:

Questo comando esegue il move di tutte le mailbox del database selezionato ed elimina i relativi account dal dominio sorgente:

Get-mailbox -DomainController ‘forestAdc1.extest.com’ -Credential $s -database ‘SourceServer1SourceDB1’ | move-mailbox -TargetDatabase ‘TargetServer1TargetDB1’ -SourceForestGlobalCatalog ‘forestA.extest.com’ -GlobalCatalog ‘forestB.extest.com’ -DomainController ‘forestBdc1.extest.com’ -NTAccountOU ‘OU=UsersOU, DC=forestB, DC=extest, DC=com’ -SourceMailboxCleanupOptions DeleteSourceNTAccount -SourceForestCredential $s -TargetForestCredential $t

 

Questo comando esegue il move di tutte le mailbox del database selezionato e le elimina dal dominio sorgente, non elimina gli account di dominio:

Get-mailbox -DomainController ‘forestAdc1.extest.com’ -Credential $s -database ‘SourceServer1SourceDB1’ | move-mailbox -TargetDatabase ‘TargetServer1TargetDB1’ -SourceForestGlobalCatalog ‘forestA.extest.com’ -GlobalCatalog ‘forestB.extest.com’ -DomainController ‘forestBdc1.extest.com’ -NTAccountOU ‘OU=UsersOU, DC=forestB, DC=extest, DC=com’ -SourceMailboxCleanupOptions DeleteSourceMailbox -SourceForestCredential $s -TargetForestCredential $t

 

Questo comando esegue il move di tutte le mailbox che nel campo “Department” hanno specificato la voce “Accounting” ed elimina i relativi account dal dominio sorgente:

Get-user -DomainController ‘forestAdc1.extest.com’ -Credential $s | where { $_.Department -ilike “Accounting” } | move-mailbox -TargetDatabase ‘Server2DB1’ -SourceForestGlobalCatalog ‘forestA.extest.com’ -GlobalCatalog ‘forestB.extest.com’ -DomainController ‘forestBdc1.extest.com’ -NTAccountOU ‘OU=UsersOU, DC=forestB, DC=extest, DC=com’ -SourceMailboxCleanupOptions DeleteSourceNTAccount -SourceForestCredential $s -TargetForestCredential $t

 

Questo comando esegue il move di tutte le mailbox che hanno impostato uno storage limit di 500Kb e le elimina dal dominio sorgente, non elimina gli account di dominio:

Get-mailbox -DomainController ‘forestAdc1.extest.com’ -Credential $s -database ‘Database1’ | where {$_.StorageQuota -gt “500KB”} | move-mailbox -TargetDatabase ‘Server2DB1’ -SourceForestGlobalCatalog ‘forestA.extest.com’ -GlobalCatalog ‘forestB.extest.com’ -DomainController ‘forestBdc1.extest.com’ -NTAccountOU ‘OU=UsersOU, DC=forestB, DC=extest, DC=com’ -SourceMailboxCleanupOptions DeleteSourceMailbox -SourceForestCredential $s -TargetForestCredential $t

 

Roberto