Convert Windows Server 2016/2019 from EVAL to FULL

Most evaluation versions can be converted to full retail versions, but the method varies slightly depending on the edition. Before you attempt to convert the version, verify that your server is actually running an evaluation version.

For releases of Windows Server 2016 prior to 14393.0.161119-1705.RS1_REFRESH, you can only perform this conversion from evaluation to retail with Windows Server 2016 that has been installed by using the Desktop Experience option (not the Server Core option). Starting with version 14393.0.161119-1705.RS1_REFRESH and later releases, you can convert evaluation editions to retail regardless of the installation option used.

To confirm you are running evaluation version, use:

DISM /online /Get-CurrentEdition

Next we need to figure out what version we can convert into using:

DISM /online /Get-TargetEditions

We can now convert using:

DISM /online /Set-Edition:[TargetEdition] `
/ProductKey:[KMS_KEY] /AcceptEula

If you need to convert to other editions, use the correct keys below.

Windows Server 2012 R2 Server Standard: D2N9P-3P6X9-2R39C-7RTCD-MDVJX
Windows Server 2012 R2 Datacenter: W3GGN-FT8W3-Y4M27-J84CP-Q3VJ9
Windows Server 2016 Datacenter: CB7KF-BWN84-R7R2Y-793K2-8XDDG
Windows Server 2016 Standard: WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY
Windows Server 2019 Datacenter: WMDGN-G9PQG-XVVXX-R3X43-63DFG
Windows Server 2019 Standard: N69G4-B89J2-4G8F4-WWYCC-J464C

I have observed that it can take up to a few hours for this process to complete (TiWorker.exe taking up lots of CPU during this task) in Server 2016. It was observed that the process was much quicker in Server 2012 R2.

Deploy headless Server 2016 Domain Controllers

This guide will show you how to deploy two headless Windows Server 2016 domain controllers in a new environment. This guide (first of the series) assumes you are standing up a hybrid Microsoft environment within a VMware homelab.

First we need to get a few things out of the way:

  • 2 Windows 2016 virtual machines with 2 vCPUs and 4-8GB RAM
  • Make sure you are using VMXNET3 network adapters
  • Install latest VMware Tools
  • Apply latest OS updates
  • Change the HOSTNAME of the VMs (XXX-DC01 and XXX-DC02)
  • Change the host to use static TCP/IP and DNS

If you are deploying domain controllers from a base Windows 2016 VM template, do not forget to generate a new SID using: C:\Windows\System32\Sysprep\sysprep.exe

We are going to deploy two domain controllers at a bare minimum, the domain name is going to be called and our network will be

The domain name you choose should be resolvable from the internet, so choose a domain that you have registered with a domain registrar and that of which you have full control of.

Some common candidates for are:


One common 3 letter server prefix used for the internal server names is the IATA 3-Letter Codes of the closest airport.

To do most of the basic first steps you can use sconfig (shell GUI) or issue the following:

Set a static DNS and TCP/IP:

Get-NetAdapter | Get-Member
Set-NetIPInterface -InterfaceAlias "PROD Network" -DHCP Disabled -PassThru

New-NetIPAddress ` 
     -AddressFamily IPv4 ` 
     -InterfaceAlias "PROD Network" ` 
     -IPAddress ` 
     -PrefixLength 25 ` 

Set-DnsClientServerAddress -InterfaceAlias "10 Network" -ServerAddresses

Rename the computer and reboot:

Rename-Computer -NewName FMT-DC01 -Restart -Force -PassThru

Create the forest:

Add-WindowsFeature AD-Domain-Services
Import-Module ADDSDeployment 
Install-ADDSForest ` 
  -DomainName `
  -DomainNetbiosName CORP `
  -DomainMode 7 `
  -ForestMode 7 `
  -InstallDns:$true `
  -LogPath "C:\Windows\NTDS" `
  -SysvolPath "C:\Windows\SYSVOL" `
  -DatabasePath "C:\Windows\NTDS"`
  -NoRebootOnCompletion:$false `
  -CreateDnsDelegation = $false `
  -Force:$true `

Deploy your second domain controller using:

Add-WindowsFeature AD-Domain-Services 
Import-Module ADDSDeployment
Install-ADDSDomainController `
  -NoGlobalCatalog:$false `
  -CreateDnsDelegation:$false `
  -Credential (Get-Credential) `
  -CriticalReplicationOnly:$false `
  -DatabasePath "C:\Windows\NTDS" `
  -DomainName "" `
  -InstallDns:$true `
  -LogPath "C:\Windows\NTDS" `
  -NoRebootOnCompletion:$false `
  -SiteName "Default-First-Site-Name" `
  -SysvolPath "C:\Windows\SYSVOL" `

Do not forget to stand up a Windows 10 jump server with RSAT tools installed so that you still have GUI access to most AD MMC snap-ins.

Next logical steps are to deploy DHCP, basic Group Policy Objects, Internal PKI and ADFS.