wir hatten im aktuellen Projekt eine Anforderung, haufenweise (weit mehr als 10.000 Benutzer) von Exchange 2003 nach Exchange 2007 zu verschieben. Genauer gesagt durften die Benutzer erst abends verschoben werden um den normalen Geschäftsbetrieb nicht zu beeinträchtigen.
Da wir hier wahrscheinlich extrem viel Zeit gebraucht hätten, haben wir uns ein PowerShell Scritp geschrieben, welches gleich mehrere Dinge auf einmal abdeckt:
- Verschieben alle Postfächer einer bestimmten Datenbank
- Verschieben alle Benutzer der bestimmten Datenbank, die sich seit Datum X nicht mehr angemeldet haben
Das hat zum Vorteil, dass wir tagsüber extrem viel Postfächer verschieben konnten, da eben nur die Postfächer einer bestimmten Datenbank verschoben worden sind, deren Benutzer seit dem Datum X nicht mehr am Exchange angemeldet waren. Da wir diese Info nur mittels WMI Abfrage von Exchange 2003 auslesen können ist das Script in diesem Fall etwas länger geworden:
$arr = @() ; Get-WmiObject -ComputerName %EX2003ServerName% -Namespace ROOT\MicrosoftExchangeV2 -Class Exchange_Mailbox Where-Object { $_.StoreName -eq "EX2003DatenbankName" -and $_.LastLogonTime -lt "20100813" } % { $arr += $_.MailboxDisplayName } ; $arr get-mailbox Move-Mailbox -TargetDatabase "EX2007Servername\Ex2007SGName\EX2007Datenbankname" -MaxThreads 12 -IgnorePolicyMatch -confirm:$false
Viele Grüße, Jens
Keine Kommentare:
Kommentar veröffentlichen