Each migration I work on has a different set of requirements to move users from Exchange 2003 to Exchange 2007. Some customers use the Exchange Manager Console to move users, which works fine. My latest customer asked me to help them move mailboxes based on users in a specific OU. So I created a powershell command that will export the alias and database for accounts that reside in a specific OU. Once we had the output file we could pipe the CSV file (with a couple modifications) into our move mailbox script and boom they should be good to go.
Just an FYI you can use the mailbox move script in this blog without running the Export Users powershell command.
You can find the script and sample output here:
get-mailbox -organizationalunit domain.com/Resources/Users"| Select database, @{Name='alias';Expression={[string]::join(";", ($_.alias))}} | Export-CSV mailboxmove.csv Output file #TYPE System.Management.Automation.PSCustomObject Database alias EX03MB1First Storage GroupMailbox Store (EX03MB1) eford CLTEX07MB02First Storage GroupMailbox Database afox EX07MB1Second Storage GroupFirst Database narmstrong EX03MB1Second Storage GroupFirst Database omoreland EX03MB1Second Storage GroupFirst Database axpojr EX03MB1First Storage GroupMailbox Store (EX03MB1) jexpo EX03MB1Second Storage GroupFirst Database expo-East EX07MB1Second Storage GroupFirst Database awhite EX07MB1Second Storage GroupFirst Database bwhite EX03MB1Second Storage GroupFirst Database ajohnson EX03MB1Second Storage GroupFirst Database bjohnson EX03MB1Second Storage GroupFirst Database cjohnson EX03MB1First Storage GroupMailbox Store (EX03MB1) aford EX03MB1First Storage GroupMailbox Store (EX03MB1) dford Script $Logfile = "c:mailboxmovelogfile.txt" $GC = "DC Name" $error.Clear() $mailboxuserfile = import-csv c:users.csv foreach ($mailboxuser in $mailboxuserfile) { $alias = $mailboxuser.alias $Targetdatabase = $mailboxuser.Targetdatabase $message = "moving user -> " + $alias $date = get-date write-output $date $message | out-file -filepath $Logfile -append -noclobber move-mailbox -id $alias -targetdatabase $Targetdatabase -globalcatalog $gc -confirm:$false if($error.count -ne 0) { $message = "moving user -> " + $alias + "move failed" write-output $date $message | out-file -filepath $Logfile -append -noclobber $message = "Error: " + $error[0].ToString() write-output $date $message | out-file -filepath $Logfile -append -noclobber $error.Clear() } } CSV file alias,Targetdatabase awhite,EX07MB1first storage groupmailbox database bwhite,EX07MB1first storage groupmailbox database Log File output....now we can add more information like statusmessage Monday, November 09, 2009 11:00:34 PM moving user -> awhite Monday, November 09, 2009 11:01:03 PM moving user -> bwhite XML file by default C:Program FilesMicrosoftExchange ServerLoggingMigrationLogs [11/9/2009 11:01:03 PM] [0] Executing Command: 'move-mailbox -id $alias -targetdatabase $Targetdatabase -globalcatalog $gc -confirm:$false' [11/9/2009 11:01:03 PM] [0] Searching objects "EX07MB1Second Storage GroupFirst Database" of type "MailboxDatabase" under the root "$null". [11/9/2009 11:01:03 PM] [0] Previous operation run on domain controller 'DC2.domain.com'. [11/9/2009 11:01:03 PM] [0] Searching objects "bwhite" of type "ADUser" under the root "$null". [11/9/2009 11:01:03 PM] [0] Previous operation run on global catalog server 'DC2.domain.com'. [11/9/2009 11:01:03 PM] [0] Processing object "domain.com/Resources/Users/Berry White". [11/9/2009 11:01:03 PM] [0] Searching objects "EX03MB1" of type "Server" under the root "$null". [11/9/2009 11:01:03 PM] [0] Previous operation run on domain controller 'DC2.domain.com'. [11/9/2009 11:01:03 PM] [0] Searching objects "EX03MB1First Storage GroupMailbox Store (EX03MB1)" of type "MailboxDatabase" under the root "$null". [11/9/2009 11:01:03 PM] [0] Previous operation run on domain controller 'DC2.domain.com'. [11/9/2009 11:01:03 PM] [0] Ending processing. [11/9/2009 11:01:03 PM] [0] [bwhite] The operation has started. [11/9/2009 11:01:03 PM] [0] [bwhite] Approving object. [11/9/2009 11:01:03 PM] [0] [bwhite] Trying to open mailbox: szServerLegacyDN: /o=First Organization/ou=First Administrative Group/cn=Configuration/cn=Servers/cn=EX03MB1 szUserLegacyDN: /o=First Organization/ou=First Administrative Group/cn=Recipients/cn=bwhite szServer: EX03MB1.domain.com [11/9/2009 11:01:03 PM] [0] [bwhite] Open mailbox succeeded. [11/9/2009 11:01:04 PM] [0] [bwhite] The operation has finished. [11/9/2009 11:01:04 PM] [0] Searching objects "domain.com/Resources/Users/Berry White" of type "ADUser" under the root "$null". [11/9/2009 11:01:04 PM] [0] Previous operation run on global catalog server 'DC2.domain.com'. [11/9/2009 11:01:04 PM] [0] [bwhite] The operation has started. [11/9/2009 11:01:04 PM] [0] [bwhite] Approving object. [11/9/2009 11:01:04 PM] [0] [bwhite] Opening source mailbox. [11/9/2009 11:01:04 PM] [0] [bwhite] Trying to open mailbox: szServerLegacyDN: /o=First Organization/ou=First Administrative Group/cn=Configuration/cn=Servers/cn=EX03MB1 szUserLegacyDN: /o=First Organization/ou=First Administrative Group/cn=Recipients/cn=bwhite szServer: EX03MB1.domain.com [11/9/2009 11:01:04 PM] [0] [bwhite] Open mailbox succeeded. [11/9/2009 11:01:04 PM] [0] [bwhite] Trying to lock mailbox: szServer: EX03MB1.domain.com pguidMdb: {36DFBEEB-51B2-4F88-90AC-7D7BF63DA4F0} pguidMailbox: {ACECF3F4-8464-4914-90CA-B3D3A32739C5} [11/9/2009 11:01:14 PM] [0] [bwhite] Mailbox was locked successfully. [11/9/2009 11:01:14 PM] [0] [bwhite] Preparing mailbox to be moved. [11/9/2009 11:01:14 PM] [0] [bwhite] Copying basic mailbox information from source mailbox: szServerSrc: EX03MB1.domain.com szServerDest: EX07MB1.domain.com pguidMdbSrc: {36DFBEEB-51B2-4F88-90AC-7D7BF63DA4F0} pguidMdbDest: {A6ED16F4-3796-4A7E-A4C9-0685F4FD6F95} pguidMailbox: {ACECF3F4-8464-4914-90CA-B3D3A32739C5} [11/9/2009 11:01:14 PM] [0] [bwhite] Basic mailbox information was copied successfully. [11/9/2009 11:01:14 PM] [0] [bwhite] Opening destination mailbox. [11/9/2009 11:01:14 PM] [0] [bwhite] Trying to open mailbox: szServerLegacyDN: /o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Configuration/cn=Servers/cn=EX07MB1 szUserLegacyDN: /o=First Organization/ou=First Administrative Group/cn=Recipients/cn=bwhite szServer: EX07MB1.domain.com [11/9/2009 11:01:14 PM] [0] [bwhite] Open mailbox succeeded. [11/9/2009 11:01:14 PM] [0] [bwhite] Trying to lock mailbox: szServer: EX07MB1.domain.com pguidMdb: {A6ED16F4-3796-4A7E-A4C9-0685F4FD6F95} pguidMailbox: {ACECF3F4-8464-4914-90CA-B3D3A32739C5} [11/9/2009 11:01:24 PM] [0] [bwhite] Mailbox was locked successfully. [11/9/2009 11:01:24 PM] [0] [bwhite] Moving messages. [11/9/2009 11:01:25 PM] [0] [bwhite] 0 items could not be moved to the target mailbox. [11/9/2009 11:01:25 PM] [0] [bwhite] Updating attributes. [11/9/2009 11:01:25 PM] [0] [bwhite] Messages moved. Closing connections. [11/9/2009 11:01:25 PM] [0] [bwhite] Trying to unlock mailbox: szServer: EX07MB1.domain.com pguidMdb: {A6ED16F4-3796-4A7E-A4C9-0685F4FD6F95} pguidMailbox: {ACECF3F4-8464-4914-90CA-B3D3A32739C5} [11/9/2009 11:01:25 PM] [0] [bwhite] Mailbox was unlocked successfully. [11/9/2009 11:01:25 PM] [0] [bwhite] Deleting mailbox from mailbox database: szServer: EX03MB1.domain.com pguidMdb: {36DFBEEB-51B2-4F88-90AC-7D7BF63DA4F0} pguidMailbox: {ACECF3F4-8464-4914-90CA-B3D3A32739C5} [11/9/2009 11:01:25 PM] [0] [bwhite] Mailbox '{ACECF3F4-8464-4914-90CA-B3D3A32739C5}' was deleted successfully. [11/9/2009 11:01:25 PM] [0] [bwhite] The operation has finished. [11/9/2009 11:01:25 PM] [0] Searching objects "domain.com/Resources/Users/Berry White" of type "ADUser" under the root "$null". [11/9/2009 11:01:25 PM] [0] Previous operation run on domain controller 'DC1.domain.com'. [11/9/2009 11:01:25 PM] [0] Setting Exchange version "0.1 (8.0.535.0)" on object "domain.com/Resources/Users/Berry White". [11/9/2009 11:01:25 PM] [0] Searching objects "EX07MB1.domain.com" of type "Server" under the root "$null". [11/9/2009 11:01:25 PM] [0] Previous operation run on domain controller 'DC2.domain.com'. [11/9/2009 11:01:25 PM] [0] [bwhite] Before applying RUS, the proxy addresses are: smtp:bwhite@domain.com X400:C=US;A= ;P=First Organizati;O=Exchange;S=White;G=Berry; SMTP:White.Berry@domain.com [11/9/2009 11:01:25 PM] [0] Applying RUS policy to the given recipient "domain.com/Resources/Users/Berry White" with the home domain controller "DC1.domain.com". [11/9/2009 11:01:25 PM] [0] The RUS server that will apply policies on the specified recipient is "EX07MB1.domain.com". [11/9/2009 11:01:25 PM] [0] [bwhite] After applying Address List Service, the proxy addresses are: smtp:bwhite@domain.com X400:C=US;A= ;P=First Organizati;O=Exchange;S=White;G=Berry; SMTP:White.Berry@domain.com [11/9/2009 11:01:25 PM] [0] Setting Exchange version "0.1 (8.0.535.0)" on object "domain.com/Resources/Users/Berry White". [11/9/2009 11:01:25 PM] [0] Saving object "domain.com/Resources/Users/Berry White" of type "ADUser" and state "Changed".