Ciao a tutti, è da tempo che volevo scrivere su un post quest’argomento dato che le cmdlet che vedremo più avanti si sono rivelate risolutive in alcuni scenari dove, senza di esse, le cose si sarebbero alquanto complicate.

Inoltre, come saprete, il caro vecchio ExMerge è stato discontinuato nelle ultime due versioni di Exchange così il Migration Team del Gruppo di Prodotto ci ha deliziato regalandoci le due cmdlet protagoniste di questo post: Export-Mailbox e Import-Mailbox .

Alcuni scenari d’esempio:

  • Migrazione cassette postali da SBS 2000 o 2003 verso Exchange 2007 o 2010 STD o EE (creando e importando i dati su file.pst) come parte (finale) del processo descritto in questo link.
  • Workaround per problematiche di migrazione e spostamento delle mailbox di tipo legacy verso Exchange 2007 e 2010
  • Backup e restore di dati tramite file .PST
  • Export di mailbox di dimesione superiore ai 2GB (limitazione presente in ExMerge)

Ci sono alcune piccole differenze per quanto riguarda i prerequisiti con Exchange 2007 e 2010. Andiamo a dargli una’occhiata:

Exchange 2007

  • L’ Export/Import verso un file PST deve essere lanciato da una macchina a 32bit (per via della dipendenza dalla versione di Outlook, necessariamente a 32bit) con installati gli Exchange Management Tools (versione Exchange 2007 SP1 o successiva).
  • Outlook 2003 SP2 o 2007 installato sulla macchina di cui sopra (si consiglia di utilizzare la build più recente a disposizione)
  • L’utente utilizzato per fa girare le cmdlet dovrà essere membro dei gruppi Exchange Organization Admin o Exchange Server Admin (sul server dove si trovano le mailbox da importare/esportare).

Exchange 2010

  • Macchina con sistema operativo a 64bit
  • Powershell 2.0
  • .NET Framework 3.51
  • Outlook 2010 64bit
  • Exchange Server 2010 management tools
  • Utenza amministrativa per la quale, col nuovo modelli di permessi legati alla RBAC, è stato precedentemente lanciato il seguente comando:

New-ManagementRoleAssignment –Role “Mailbox Import Export” –User “<username>”

clip_image002

Oppure è possibile creare un gruppo ed assegnare i diritti di cui sopra al gruppo appena creato:

New-ManagementRoleAssignment –Role “Mailbox Import Export” –Group “<usergroup>”

Nota: a nessun utente, per motivi di sicurezza, è associato in maniera nativa il ruolo di cui sopra

Una volta completati i passi relativi ai prerequisiti ed ai permessi amministrativi sarà possibile esportare ed importare dati da e verso alter mailbox o file .pst. Le versioni di Exchange dalle quali è possibile esportare i dati sono le seguenti:

  • Exchange 2000 SP3
  • Exchange 2003 SP2
  • Exchange 2007
  • Exchange 2010

Con la cmdlet Export-Mailbox, per impostazione predefinita, vengono esportate le seguenti cartelle:

  • Posta in arrivo
  • Posta eliminata
  • Bozze
  • Posta indesiderata
  • Posta in uscita
  • Posta inviata
  • Journal
  • Calendario
  • Contatti
  • Note
  • Attività

Nota: la cmdlet esporta i messaggi del dumpster e non consente di esportare le regole

È possibile unire i dati esportati in una cartella di destinazione esistente utilizzando il parametro AllowMerge. Da Exchange 2007 SP1, se si specifica il parametro AllowMerge, il nome della sottocartella non includerà l'indicatore di data e ora.

Se i dati vengono esportati un cartella di un’altra cassetta postale utilizzando i parametri TargetMailboxe TargetFolder sarà crata una sottocartella denominata Recovered Data - <Source_Mailbox_Alias> - <Date_Time_Stamp>. La sottocartella conterrà le cartelle esportate e i messaggi relativi.

image Un log in formato XML della cmdlet Export-Mailbox sarà salvato nella cartella <ExchangeRoot>\Logging\MigrationLogs\

Alcuni utili esempi con Export-Mailbox

Esportare i dati di una cassetta postale in una cartella specifica di un’altra cassetta postale, eseguire il comando riportato di seguito:

Export-Mailbox -Identity <MailboxIdParameter> -TargetMailbox <MailboxIdParameter> -TargetFolder <Folder_Name>

Nota: non è possibile utilizzare la stessa mailbox come source e target mailbox

Esportare i dati di una cassetta postale in un file .PST:

image

Export-Mailbox -Identity <MailboxIdParameter> -PSTFolderPath <Path_Of_PST_Folder>\<File_Name>.pst

Per esportare in un file PST i dati ricevuti in un intervallo di date specifico, eseguire il comando riportato di seguito:

Export-Mailbox -Identity <MailboxIdParameter> -StartDate "<Month/Day/Year>" -EndDate "<Month/Day/Year>" -PSTFolderPath <Path_Of_PST_Folder>\<File_Name>.pst

Per esportare i dati da tutte le cassette postali degli utenti di uno specifico mailbox database eseguire il comando riportato di seguito:

Get-Mailbox -Database 'MDB' | Export-Mailbox -PSTFolderPath D:\PSTs

Nota: specificare in questo caso come destinazione una directory invece di un singolo file .pst

Per esportare i dati da tutte le cassette postali degli utenti nell'unità organizzativa Marketing, eseguire il comando riportato di seguito:

Get-Mailbox -OrganizationalUnit Marketing | Export-Mailbox -PSTFolderPath C:\PSTFiles

Per esportare solo i dati contenuti nella cartella Posta inviata in un’altra mailbox, eseguire il comando riportato di seguito:

Export-Mailbox -Identity <MailboxIdParameter> -IncludeFolders '\Sent Items' -TargetFolder <Target_Folder_Name> -TargetMailbox <MailboxIdParameter>

Per escludere determinate cartelle dall'esportazione (ad esempio elementi contenuti nelle cartelle Posta indesiderata e Contatti) eseguire il comando riportato di seguito:

Export-Mailbox -TargetMailbox <MailboxIdParameter> -TargetFolder <Target_Folder_Name> -ExcludeFolders "\Junk E-Mail","\Contacts"

Per esportare i dati da un gruppo di cassette postali, ad esempio da tutte le cassette postali in cui la posizione dell'utente inizia con "VP", eseguire il comando riportato di seguito:

Get-User | where { $_.Title -ilike "VP*" } | Export-Mailbox -TargetFolder <Folder_Name> -TargetMailbox <MailboxIdParameter>

Per esportare i dati delle cassette postali dell’ Accounting department nella mailbox dell’ amministratore (nella sottocartella AccountingData):

Get-user | where { $_.Department -Eq "Accounting" } | export-mailbox -TargetFolder " AccountingData" -TargetMailbox Administrator

Esportare i messaggi in giapponese della mailbox UserMailbox1 escludendo il contenuto presente in Deleted Items folder nella cartella User1JapaneseItems della mailbox UserMailbox2:

Export-mailbox -id UserMailbox1 -ExcludeFolders "\Deleted Items" -Locale ja-jp -TargetFolder 'User1JapaneseItems' -TargetMailbox UserMailbox2

Per utilizzare filtri specificando gli elementi della cassetta postale di origine da includere nell'esportazione, eseguire il comando riportato di seguito:

Export-Mailbox -Identity <MailboxIdParameter> -TargetMailbox <MailboxIdParameter> -TargetFolder <Target_Folder_Name> -ContentKeywords "<String[]>" -AttachmentFilenames "<String[]>" -StartDate "<Month/Day/Year> <Time>" -RecipientKeywords <String[]>

Per individuare ed eliminare determinati elementi da un gruppo di cassette postali, ad esempio tutte le cassette postali su un database, eseguire il comando riportato di seguito:

Get-Mailbox -Database DB1 | Export-Mailbox -TargetMailbox ExportMailbox -TargetFolder VirusData -SubjectKeywords "Virus message" -DeleteContent

Nell’ esempio di cui sopra vengono prima restituite tutte le cassette postali nel database "DB1", quindi vengono ricercati gli elementi contenenti la stringa "Virus message" nella riga dell'oggetto. Gli elementi vengono esportati nella cassetta postale ExportMailbox e quelli originali vengono rimossi dalla cassetta postale di origine.

Per individuare ed eliminare determinati elementi da un gruppo di cassette postali, ad esempio tutte le cassette postali in un database, senza esportare gli elementi in un'altra cassetta postale, eseguire il comando riportato di seguito:

Get-Mailbox -Database DB1 | Export-Mailbox -SubjectKeywords "Virus message" -DeleteContent

In questo esempio vengono prima restituite tutte le cassette postali nel database "DB1", quindi vengono ricercati ed eliminati gli elementi che contengono la stringa "Virus message" nell'oggetto.

Per fare lo stesso a livello di server processando 10 mailbox per volta è possibile usare la seguente sintassi:

Get-Mailbox -Server EXCHANGE01 | Export-Mailbox -SubjectKeywords "Virus message" -DeleteContent

Alcuni utili esempi con Import-Mailbox

Import-Mailbox -Identity <mailboxUser> -PSTFolderPath <PSTFileLocation>

Nota: ancora il PSTFolderPath rappresenta il path competo della directory contente i/il file .pst. Nel caso in cui si utilizzi il nome della cartella e non il nome spefico del file .pst la cmdlet tenterà di far corrispondere il nome del file .pst al nome all’alias dell’utente Exchange. In mancanza di corrispondenza il file verrà skippato. Un esempio è riportato qua di seguito:

Get-Mailbox -Database 'MDB' | Import-Mailbox -PSTFolderPath D:\PSTs

Per importare solo i messaggi creati dal 1/1/06 al 1/12/06 contenti la parola "review" nel soggetto e le parole {"project","alpha"} nel body:

Import-mailbox -Identity ricardr -PSTFolderPath D:\PSTs -StartDate 1/1/06 -EndDate 12/1/06 -SubjectKeywords:'review' -ContentKeywords:'project','alpha'

Nota: i filtri disponibili per Export/Import su PST sono i seguenti: Locale, StartDate, EndDate, ContentKeywords, SubjectKeywords, AttachmentFileNames, AllContentKeywords, SenderKeywords, RecipientKeywords.

Information utili

Cristian Crifò
Senior Support Engineer
Microsoft Enterprise Exchange Support