Defender deaktivieren
Damit die Exchange Installation etwas schneller durchläuft, sollte während der Installation der Windows Defender abgeschaltet werden. Nach der Exchange Installation wird der Windows Defender wieder eingeschaltet. Falls ein anderer Virenscanner auf dem Server im Einsatz ist, sollte dieser ebenfalls deaktiviert werden.
Unter einem Core-Server geht das mit der PowerShell:
Set-MpPreference -DisableRealtimeMonitoring $true
Set-MpPreference -MAPSReporting 0
Voraussetzungen
Benötigte Komponenten installieren
Bevor Exchange Server installiert werden kann, müssen einige Voraussetzungen installiert werden, zunächst sind dies Windows Features, welche einfach mit der PowerShell installiert werden können:
Desktop
Install-WindowsFeature Server-Media-Foundation, NET-Framework-45-Core, NET-Framework-45-ASPNET, NET-WCF-HTTP-Activation45, NET-WCF-Pipe-Activation45, NET-WCF-TCP-Activation45, NET-WCF-TCP-PortSharing45, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Clustering-CmdInterface, RSAT-Clustering-Mgmt, RSAT-Clustering-PowerShell, WAS-Process-Model, Web-Asp-Net45, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext45, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI, Windows-Identity-Foundation, RSAT-ADDS
Core
Install-WindowsFeature Server-Media-Foundation, NET-Framework-45-Core, NET-Framework-45-ASPNET, NET-WCF-HTTP-Activation45, NET-WCF-Pipe-Activation45, NET-WCF-TCP-Activation45, NET-WCF-TCP-PortSharing45, RPC-over-HTTP-proxy, RSAT-Clustering, RSAT-Clustering-CmdInterface, RSAT-Clustering-PowerShell, WAS-Process-Model, Web-Asp-Net45, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Metabase, Web-Mgmt-Service, Web-Net-Ext45, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI, RSAT-ADDS
Benötige Software unabhängig von Core oder Desktop
- Visual C++ Redistributable Package for Visual Studio 2012
- Visual C++ Redistributable Package for Visual Studio 2013
- IIS URL Rewrite Module
- Unified Communications Managed API 4.0
Auslagerungsdatei
Die Größe der Auslagerungsdatei sollte 25% vom Arbeitsspeicher betragen.
Bei 20GB (20480 MB) = 20480/100*25 = 5120MB
GUI
Core
Diese kann auch über die Kommandozeile geändert werden
wmic computersystem where name="%computername%" set AutomaticManagedPagefile=False
wmic computersystem where name="%computername%" set AutomaticManagedPagefile=False
Energieplan
GUI
Core
powercfg /list
powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
powercfg /getactivescheme
Exchange-Setup
Nach einem Neustart kann das Exchange-Setup gestartet werden. Es wird empfohlen, den Exchange auf dem D-Laufwerk zu installieren:
mkdir "D:\Program Files\Microsoft\Exchange Server\V15"
Was das Setup gerade macht bzw. wo es hängt, kann mit folgendem PowerShell-Befehl verfolgt werden:
Get-Content "C:\ExchangeSetupLogs\ExchangeSetup.log" -Tail 10 -Wait
Aktuelles SU installieren
Exchange Server build numbers and release dates | Microsoft Learn
Datenbank umbenennen & verschieben
Get-MailboxDatabase -Server $env:computername | Set-MailboxDatabase -Name MBXDB01
Move-DatabasePath MBXDB01 -EdbFilePath E:\MBXDB01\MBXDB01.edb -LogFolderPath E:\MBXDB01
Defender einschalten und anpassen
Da der Defender zu Beginn der Installation abgeschaltet wurde, ist es jetzt an der Zeit den Defender zu konfigurieren und wieder zu aktivieren. Dazu kann das Script „Get-Exchange2016AVExclusions.ps1“ von Paul Cunningham runtergeladen und auf dem Exchange Server gespeichert werden:
Der PowerShell-Script muss wie folgt in der Exchange-Verwaltungsshell ausgeführt werden:
.\Get-Exchange2016AVExclusions.ps1 -ConfigureWindowsDefender
URLs der virtuellen Verzeichnisse ändern
Die hinterlegten URLs müssen für den Exchange-Server auflösbar sein!
$servername = "EX01"
$internalhostname = "outlook."
$externalhostname = "outlook."
$autodiscoverhostname = "autodiscover."
$owainturl = "https://" + "$internalhostname" + "/owa"
$owaexturl = "https://" + "$externalhostname" + "/owa"
$ecpinturl = "https://" + "$internalhostname" + "/ecp"
$ecpexturl = "https://" + "$externalhostname" + "/ecp"
$ewsinturl = "https://" + "$internalhostname" + "/EWS/Exchange.asmx"
$ewsexturl = "https://" + "$externalhostname" + "/EWS/Exchange.asmx"
$easinturl = "https://" + "$internalhostname" + "/Microsoft-Server-ActiveSync"
$easexturl = "https://" + "$externalhostname" + "/Microsoft-Server-ActiveSync"
$oabinturl = "https://" + "$internalhostname" + "/OAB"
$oabexturl = "https://" + "$externalhostname" + "/OAB"
$mapiinturl = "https://" + "$internalhostname" + "/mapi"
$mapiexturl = "https://" + "$externalhostname" + "/mapi"
$aduri = "https://" + "$autodiscoverhostname" + "/Autodiscover/Autodiscover.xml"
Get-OwaVirtualDirectory -Server $servername | Set-OwaVirtualDirectory -internalurl $owainturl -externalurl $owaexturl -Confirm:$false
Get-EcpVirtualDirectory -server $servername | Set-EcpVirtualDirectory -internalurl $ecpinturl -externalurl $ecpexturl -Confirm:$false
Get-WebServicesVirtualDirectory -server $servername | Set-WebServicesVirtualDirectory -internalurl $ewsinturl -externalurl $ewsexturl -Confirm:$false
Get-ActiveSyncVirtualDirectory -Server $servername | Set-ActiveSyncVirtualDirectory -internalurl $easinturl -externalurl $easexturl -Confirm:$false
Get-OabVirtualDirectory -Server $servername | Set-OabVirtualDirectory -internalurl $oabinturl -externalurl $oabexturl -Confirm:$false
Get-MapiVirtualDirectory -Server $servername | Set-MapiVirtualDirectory -externalurl $mapiexturl -internalurl $mapiinturl -Confirm:$false
Get-OutlookAnywhere -Server $servername | Set-OutlookAnywhere -externalhostname $externalhostname -internalhostname $internalhostname -ExternalClientsRequireSsl:$true -InternalClientsRequireSsl:$true -ExternalClientAuthenticationMethod 'Negotiate' -Confirm:$false
Get-ClientAccessService $servername | Set-ClientAccessService -AutoDiscoverServiceInternalUri $aduri -Confirm:$false
Get-OwaVirtualDirectory -Server $servername | fl server,externalurl,internalurl
Get-EcpVirtualDirectory -server $servername | fl server,externalurl,internalurl
Get-WebServicesVirtualDirectory -server $servername | fl server,externalurl,internalurl
Get-ActiveSyncVirtualDirectory -Server $servername | fl server,externalurl,internalurl
Get-OabVirtualDirectory -Server $servername | fl server,externalurl,internalurl
Get-MapiVirtualDirectory -Server $servername | fl server,externalurl,internalurl
Get-OutlookAnywhere -Server $servername | fl servername,ExternalHostname,InternalHostname
Get-ClientAccessService $servername | fl name,AutoDiscoverServiceInternalUri