Da ich gerade eine Migration eines Exchange Server 2013 auf 2019 bei einem Kundensystem durchführe, schreibe ich hier gleich eine Anleitung dazu.
Begonnen wird mit dem Exchange Server 2013.
Hier wird als erstes die aktuellste CU installiert.
Diese ist bei Microsoft frei zum Download verfügbar. Das Update beinhaltet eine Downtime, dies muss geplant sein.
Dann kann das Setup einfach ausgeführt werden. Dabei einfach das Setup durchklicken und warten.. das kann dauern. (Snapshot nicht vergessen)
Nun installieren wir wie bei einer Neuinstallation einen Exchange Server 2019 auf einem Windows Server 2019:
Exchange Server vorbereitungen
Nach der Installation können wir nun die Konfiguration starten.
Als erstes beginnen wir den Datenbanknamen zu ändern.
get-mailboxdatabase -Server SRV-EXCH19 | Set-MailboxDatabase -Name DB19
nun verschieben wir die Logs auf eine eigene Partition
(bei einer Migration ist hier eine größere Partition zu empfehlen da beim migrieren viele Logs geschrieben werden und die Partition schnell voll läuft)
Move-DatabasePath DB19 -LogFolderPath E:\Logs
Wer möchte kann die Datenbank auch auf eine eigene Partition legen
Move-DatabasePath DB19 -EdbFilePath F:\DB\DB19.edb
Damit der neue Exchange auch Mails versenden kann, müssen wir diesen beim Sendeconnector hinzufügen:
Nun wechseln wir zum Reiter Server -> Datenbanken:
Diese werde müssen in beiden Datenbanken übereinstimmen.
Sicherlich ist hier unlimited nicht optimal. Da dies aber schon im alten Exchange eingestellt ist bleibt mir wohl keine Wahl.
Nun passen wir noch die virtuellen Verzeichnisse an:
Hierzu verwenden wir ein Skript das und die Pfade vom alten EX ausließt und übernimmt(das Skript kann sowohl für den Exchange 13 als auch 16 verwendet werden) Dies muss in der Exchange Shell ausgeführt werden:
$Exchange2019Server = "Exchange2019" $Exchange2016Server = "Exchange2016" #Get URLs from Exchange 2016 Server $autodiscoverhostname = (Get-ClientAccessService $Exchange2016Server).AutoDiscoverServiceInternalUri $owainturl = (Get-OwaVirtualDirectory -Server $Exchange2016Server).internalurl $owaexturl = (Get-OwaVirtualDirectory -Server $Exchange2016Server).externalurl $ecpinturl = (Get-EcpVirtualDirectory -server $Exchange2016Server).internalurl $ecpexturl = (Get-EcpVirtualDirectory -server $Exchange2016Server).externalurl $ewsinturl = (Get-WebServicesVirtualDirectory -Server $Exchange2016Server).internalurl $ewsexturl = (Get-WebServicesVirtualDirectory -Server $Exchange2016Server).externalurl $easinturl = (Get-ActiveSyncVirtualDirectory -Server $Exchange2016Server).internalurl $easexturl = (Get-ActiveSyncVirtualDirectory -Server $Exchange2016Server).externalurl $oabinturl = (Get-OabVirtualDirectory -server $Exchange2016Server).internalurl $oabexturl = (Get-OabVirtualDirectory -server $Exchange2016Server).externalurl $mapiinturl = (Get-MapiVirtualDirectory -server $Exchange2016Server).internalurl $mapiexturl = (Get-MapiVirtualDirectory -server $Exchange2016Server).externalurl $OutlAnyInt = (Get-OutlookAnywhere -Server $Exchange2016Server).internalhostname $OutlAnyExt = (Get-OutlookAnywhere -Server $Exchange2016Server).externalhostname #Configure Exchange 2019 Server Get-OwaVirtualDirectory -Server $Exchange2019Server | Set-OwaVirtualDirectory -internalurl $owainturl -externalurl $owaexturl -Confirm:$false Get-EcpVirtualDirectory -server $Exchange2019Server | Set-EcpVirtualDirectory -internalurl $ecpinturl -externalurl $ecpexturl -Confirm:$false Get-WebServicesVirtualDirectory -server $Exchange2019Server | Set-WebServicesVirtualDirectory -internalurl $ewsinturl -externalurl $ewsexturl -Confirm:$false Get-ActiveSyncVirtualDirectory -Server $Exchange2019Server | Set-ActiveSyncVirtualDirectory -internalurl $easinturl -externalurl $easexturl -Confirm:$false Get-OabVirtualDirectory -Server $Exchange2019Server | Set-OabVirtualDirectory -internalurl $oabinturl -externalurl $oabexturl -Confirm:$false Get-MapiVirtualDirectory -Server $Exchange2019Server | Set-MapiVirtualDirectory -externalurl $mapiexturl -internalurl $mapiinturl -Confirm:$false Get-OutlookAnywhere -Server $Exchange2019Server | Set-OutlookAnywhere -externalhostname $OutlAnyExt -internalhostname $OutlAnyInt -ExternalClientsRequireSsl:$true -InternalClientsRequireSsl:$true -ExternalClientAuthenticationMethod 'Negotiate' -Confirm:$false Get-ClientAccessService $Exchange2019Server | Set-ClientAccessService -AutoDiscoverServiceInternalUri $autodiscoverhostname -Confirm:$false #Display setttings Get-OwaVirtualDirectory | fl server,externalurl,internalurl Get-EcpVirtualDirectory | fl server,externalurl,internalurl Get-WebServicesVirtualDirectory | fl server,externalurl,internalurl Get-ActiveSyncVirtualDirectory | fl server,externalurl,internalurl Get-OabVirtualDirectory | fl server,externalurl,internalurl Get-MapiVirtualDirectory | fl server,externalurl,internalurl Get-OutlookAnywhere | fl servername,ExternalHostname,InternalHostname Get-ClientAccessService | fl name,AutoDiscoverServiceInternalUri
Je Nach Zertifikat muss dies auch auf den neuen Exchange übernommen werden.
Hier für muss dies am alten Exchange exportiert und am neuen importiert werden.
Nun passen wir die DNS Einträge an, damit diese auf den neuen Exchange zeigen.
Die Portfreigaben dürfen wir auch nicht vergessen.
Puh, wieder was geschafft.
Jetzt können wir endlich die Postfächer migrieren, aber nicht zu voreilig.
Erst kommen die Systempostfächer dran.
Mal schauen was wir für Systempostfächer haben
erst brauchen wir den Namen der alten DB:
get-mailboxdatabase
jetzt lassen wir uns die Systempostfächer der alten DB anzeigen:
get-mailbox -Database "Mailbox Database 1626922216" -Arbitration
Diese müssen jetzt in die neue DB migriert werden:
get-mailbox -Database "Mailbox Database 1626922216" -Arbitration | new-moverequest -TargetDatabase DB19
Nun Startet die Migration. Mit folgendem Befehl prüfen wir den Status:
get-moverequest
Nachdem wir auch das abgeschlossen haben. Können wir endlich die Benutzerpostfächer migrieren.
Dafür gibt es zwei Wege, entweder über die Shell oder alternativ über die ECP.
Ich verwende lieber die Shell, da dies schneller geht.
Lassen wir uns erst mal alle Postfächer anzeigen:
get-mailbox -Database "Mailbox Database 1626922216"
Je nachdem wie viele User im System sind ist es ratsam die Migration in Häppchen durchzuführen, da viele Logs geschrieben werden und wir ein voll laufen der Partition vermeiden wollen. Das gibt sonst extra Arbeit.|