Exchange Server 2016 prerequisites (Part 1)


Before we are going to start and install Exchange 2016 on a server, we should configure Exchange Server 2016 prerequisites first. I will be using Exchange 2016 CU14. As of writing, that version is the latest released by Microsoft.


  • OS: Windows Server 2016 Standard or Datacenter (full GUI required, Core not supported).
  • CPU: Minimum of 2 CPUs with 2 cores each; Intel and AMD are supported.
  • Memory: For the Mailbox role, 8GB memory minimum. I recommend 32GB or higher.
  • System (OS) partition: Must be NTFS. I recommend 100GB or higher.
  • Domain Controllers (DC): Must be Windows Server 2008 R2 SP1 or higher.
  • Active Directory Forest Functional Level (FFL): Must be Windows Server 2008R2 or higher for Exchange 2016 CU7 till CU14.
  • IPv6: Do NOT disable.
  • Outlook Clients: Requires Outlook 2010 Service Pack 1 and the latest public update (Windows); Outlook 2011 for Mac or newer (Mac).


Uninstall Windows Defender on Server

When installing Exchange 2016, it needs to copy and install the files. The Windows Defender will give a high CPU load on your server. This will cause a delay for your installation.


Open up PowerShell as an Administrator and run the following command:

Get-WindowsFeature *defender* | Remove-WindowsFeature

When done, reboot the server.


Setup pagefile on the Exchange Server 2016

Microsoft recommends a fixed pagefile of RAM size + 10MB or 32,778 MB (which is 32GB + 10MB) as the maximum of a pagefile.

For example, if you have 8GB RAM size + 10MB = 8,202 MB. If you have 32GB RAM size or more, your pagefile will be the maximum of 32,778 MB.

Open up PowerShell as an Administrator and run the following command:

# Variable

$Computername = $Env:ComputerName

# Get RAM and set ideal PageFileSize

try {

    [int32]$RamInMb = (Get-CIMInstance -computername $Name -Classname win32_physicalmemory -ErrorAction Stop | measure-object -property capacity -sum).sum/1MB

} catch {

    Write-Host "Cannot acquire the amount of RAM in the server." -ForegroundColor Red

    $Stop = $True


[int32]$Size = $RAMinMb + 10

# Set Maximum Pagefile Size

If ($Size -gt 32778) {

    $Size = 32778


# Disk Space Check

$Disk = Get-WmiObject Win32_LogicalDisk -ComputerName $ComputerName -Filter "DeviceID='C:'" | Select-Object Size,FreeSpace

$MB = $Disk.FreeSpace/1mb

$FreeSpace = [Math]::Round($MB)

if ($FreeSpace -lt $Size) {

    Write-Host "There isn't enough diskspace available for configuring the Pagefile to the correct size." -ForegroundColor Yellow

    Write-Host "The Pagefile needs to be $Size MB and the amount of freespace is $FreeSpace MB." -ForegroundColor White

} Else {

    Write-Host " "

    Write-Host "The Pagefile will be set to a Maximum size of $Size MB and a Minimum size of $Size MB." -ForegroundColor Yellow

    Write-Host " "

    # Set the Automatic Pagefile to False

    Set-CimInstance -Query “Select * from Win32_ComputerSystem” -Property @{AutomaticManagedPagefile=”False”}  -ErrorAction STOP

    # Remove the old Pagefile

    $PageFile = Get-CimInstance -ClassName Win32_PageFileSetting

    $PageFile | Remove-CimInstance

    # Set the Pagefile to the new size

    New-CimInstance -ClassName Win32_PageFileSetting -Property  @{Name= "$("C"):\pagefile.sys"}

    Get-CimInstance -ClassName Win32_PageFileSetting | Set-CimInstance -Property @{InitialSize = $Size; MaximumSize = $Size}

    # End Result

    $Pagefile = Get-CimInstance Win32_PageFileSetting -Property * | Select-Object Name,InitialSize,MaximumSize

    $Name = $;$Max = $Pagefile.maximumsize;$Min = $Pagefile.initialsize

    Write-Host " "

    Write-Host "The page file of $Name is now configured for an initial size of " -ForegroundColor White -NoNewline

    Write-Host "$Min " -ForegroundColor Green -NoNewline

    Write-Host "and a maximum size of " -ForegroundColor White -NoNewline

    Write-Host "$Max." -ForegroundColor Green

    Write-Host " "

    Write-Host "DON'T FORGET TO REBOOT THE SERVER!!!" -ForegroundColor Red



Install feature roles on Windows Server 2016

Open up PowerShell as an Administrator and run the following command. A restart is required after the roles and features have finished installing. I like to add the –Restart parameter so that the system restarts automatically.

Install-WindowsFeature NET-Framework-45-Features, Server-Media-Foundation, 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 -Restart


Install .NET Framework 4.7.2 or later

You can have a look below in the chart which .NET Framework you need. I choose 4.7.2 as you can use it from Exchange 2016 CU11 and higher.

You can download .NET Framework 4.7.2 from the following link.

Install Unified Communications Managed API 4.0 Runtime

You can download Unified Communications Managed API 4.0 Runtime from the following link.


Install Visual C++ 2013 Redistributable Packages

You can download Visual C++ Redistributable Packages for Visual Studio 2013 from the following link.


It’s always important to have the prerequisites configured. In the next article, you can read about Exchange Server 2016 Installation (Part 2).

Thank you for your time reading the guide on Exchange Server 2016 prerequisites (Part 1). Please leave a comment if you found it useful.

Until the next time – TechGuideReview.

Leave a Reply

Your email address will not be published. Required fields are marked *

Post comment