# Windows Server 2025 In-Place Upgrade from 2019, 2022 and Older

Source: https://srvscripts.com/guides/windows-server-2025-in-place-upgrade/
Updated: 2026-10-06
Publisher: srvScripts (https://srvscripts.com/)

A Windows Server 2025 in-place upgrade replaces the operating system while keeping the server’s roles, applications, settings and data, so you avoid rebuilding and reconfiguring the machine. Windows Server 2025 can upgrade up to four versions at once, directly from Windows Server 2012 R2, 2016, 2019 or 2022, and servers on 2019 and 2022 can now receive it as a feature update through Windows Update. This guide covers the supported paths, preparation, a compatibility scan, the interactive and unattended upgrade, domain controller rules, and what to check afterwards.

**Short answer:** Back up the server, confirm it runs a supported version and edition, and disable NIC Teaming. Mount the Windows Server 2025 ISO and run `setup.exe /auto upgrade /compat scanonly` to check for blockers. If it exits with `0xC1900210`, run `setup.exe` again, choose the same edition and **“Keep files, settings, and apps”**, and let it restart. Do not upgrade domain controllers in place: promote a new Windows Server 2025 DC and demote the old one instead.

In short: Back up the server, confirm it runs a supported version and edition, and disable NIC Teaming.

## Which method to use

| Method | Source versions | Best for | Pros | Cons |
| --- | --- | --- | --- | --- |
| Setup from ISO, interactive | 2012 R2, 2016, 2019, 2022 | Single servers | Full control, edition choice | Needs console or RDP session during setup |
| setup.exe /auto upgrade (unattended) | 2012 R2, 2016, 2019, 2022 | Many servers, scripted change windows | Repeatable, scan-only mode, log copy | Needs testing of switches per image |
| Feature update via Windows Update | 2019, 2022 (with the March 2026 cumulative update or later) | Servers that already patch from Windows Update | No ISO; offered in Settings | Registry opt-in required; manual click to start |
| Cluster OS Rolling Upgrade | Previous version only (for example 2022) | Failover clusters | No workload downtime | One version at a time |
| Clean install and migrate | Any | Domain controllers, old or messy servers | Clean OS, full new-version benefits | More work; roles must be migrated |

## Upgrade or rebuild?

A Windows Server 2025 in-place upgrade is the right choice when the server runs a supported role or application that is hard to reinstall, its configuration is documented, and it has been reasonably well maintained. It saves the work of reinstalling software, re-creating shares and permissions, and re-issuing certificates.

Rebuild instead when:

- The server is a domain controller (see below), or a role whose vendor recommends migration rather than upgrade.

- It started life on Windows Server 2012 R2 or earlier and has been upgraded before. Each upgrade carries old drivers, registry settings and leftovers forward.

- It has unexplained problems today. An upgrade rarely fixes those and often makes them harder to diagnose.

- The hardware is close to the end of its support life, or the VM would benefit from a newer generation or firmware type.

For stateless servers (web front ends, RDS session hosts, print servers), a new Windows Server 2025 build deployed from a template is usually faster than any upgrade.

## Supported upgrade paths

Microsoft’s upgrade table lists these direct paths to Windows Server 2025 for non-clustered servers:

| Current version | Direct upgrade to 2025 |
| --- | --- |
| Windows Server 2022 | Yes |
| Windows Server 2019 | Yes |
| Windows Server 2016 | Yes |
| Windows Server 2012 R2 | Yes |
| Windows Server 2012 and earlier | No; upgrade to a supported version first, or rebuild |

Edition and installation rules:

- By default the upgrade keeps the edition. Standard can move to Datacenter or Datacenter: Azure Edition during the upgrade; Datacenter cannot move down to Standard.

- An evaluation copy is a clean-install-only product. Convert an evaluation installation to a licensed edition before you plan an upgrade.

- The system language must match. 32-bit to 64-bit and preview (Insider) builds are not supported.

- You cannot switch between Server Core and Desktop Experience during the upgrade.

- Servers that boot from a VHD, and Windows Storage Server, cannot be upgraded in place.

## Prerequisites

Confirm each item before you schedule the Windows Server 2025 in-place upgrade:

- Hardware that meets the Windows Server 2025 minimums. The CPU must support SSE4.2 and the POPCNT instruction, plus NX/DEP, CMPXCHG16b, LAHF/SAHF, PrefetchW and SLAT. Older virtual machines on hosts with CPU compatibility masking may hide these features; check with Sysinternals `Coreinfo`.

- Enough free space on the system disk. Microsoft recommends generous headroom for the feature update path; plan for at least 30 to 40 GB free.

- A full backup with a tested restore, or a checkpoint for VMs you can afford to roll back, and a maintenance window.

- A valid Windows Server 2025 product key and activation method (KMS host that can activate 2025, MAK, retail, or Azure Arc pay-as-you-go).

- Administrator rights on the server and console access (hypervisor console, iLO, iDRAC) in case networking fails after the upgrade.

- Confirmation from vendors that antivirus, backup agents, monitoring agents and line-of-business apps support Windows Server 2025. Check Microsoft’s role and feature migration matrix for built-in roles.

## Step 1: record the current state

Save the server’s details somewhere off the server before you start, so you can compare and troubleshoot afterwards:

```
Get-ComputerInfo -Property WindowsProductName, WindowsBuildLabEx, WindowsEditionID, OsLanguage | Out-File \\fileserver\upgrade\APP01-computerinfo.txt
systeminfo | Out-File \\fileserver\upgrade\APP01-systeminfo.txt
ipconfig /all | Out-File \\fileserver\upgrade\APP01-ipconfig.txt
Get-WindowsFeature | Where-Object Installed | Out-File \\fileserver\upgrade\APP01-features.txt
Get-Service | Where-Object StartType -eq Automatic | Out-File \\fileserver\upgrade\APP01-services.txt
```

Also note static routes, local certificates, scheduled tasks and any software that is licensed to the hardware or OS version.

## Step 2: prepare the server

- Install the latest cumulative update on the current OS and restart.

- Disable NIC Teaming (LBFO). Microsoft requires it to be disabled before an in-place upgrade; re-create it afterwards. Record the team configuration with `Get-NetLbfoTeam` and `Get-NetLbfoTeamMember`, then remove it with `Remove-NetLbfoTeam`.

- On Hyper-V hosts, shut down or move every VM. No VM should run during the upgrade.

- Suspend BitLocker on the OS volume for the upgrade: `Suspend-BitLocker -MountPoint C: -RebootCount 3`.

- Uninstall or update software the vendor does not support on Windows Server 2025, especially third-party antivirus and file system filter drivers.

- If the server is a failover cluster node, stop here: use Cluster OS Rolling Upgrade or Cluster-Aware Updating instead.

## Step 3: run a compatibility scan

Windows Setup can check the server for Windows Server 2025 in-place upgrade blockers without changing anything. Mount the ISO (for example as `D:`) and run from an elevated prompt:

```
D:\setup.exe /auto upgrade /compat scanonly /dynamicupdate disable /copylogs \\fileserver\upgrade\APP01-scan
```

Check the exit code in the same session with `echo %errorlevel%` (Command Prompt) or `$LASTEXITCODE` (PowerShell), converted to hex:

| Exit code | Meaning |
| --- | --- |
| 0xC1900210 | No compatibility issues found |
| 0xC1900208 | Actionable compatibility issues, for example an incompatible app |
| 0xC1900204 | The requested migration choice (keep apps and files) is not available, often an edition or language mismatch |
| 0xC190020E | Not enough free disk space |

For details, read `C:\$WINDOWS.~BT\Sources\Panther\setupact.log` and the `CompatData_*.xml` files in the same folder, or run Microsoft’s SetupDiag tool against the logs.

## Step 4: upgrade with setup.exe

### Interactive

- Run `D:\setup.exe` and accept the UAC prompt.

- On the first screen, keep **Setup automatically downloads updates** unless the server has no internet access; choose **Change how Setup downloads updates** to skip it.

- Enter the product key when asked and select the edition that matches the current one (or Datacenter if you are moving up from Standard), with the same installation option (Desktop Experience or Core).

- Accept the licence terms.

- Choose **“Keep files, settings, and apps”**. If only “Nothing” is offered, the edition, language or installation option does not match; cancel and fix it.

- Review the **Ready to install** screen and click **Install**. The server restarts several times and RDP is unavailable for most of the process.

### Unattended

Find the image index of the edition you need first, because the ISO holds Standard and Datacenter in both Core and Desktop Experience forms:

```
dism /Get-WimInfo /WimFile:D:\sources\install.wim
```

Then run the upgrade, replacing the index and key:

```
D:\setup.exe /auto upgrade /imageindex 2 /pkey XXXXX-XXXXX-XXXXX-XXXXX-XXXXX /eula accept /dynamicupdate enable /compat ignorewarning /copylogs \\fileserver\upgrade\APP01 /quiet
```

- `/auto upgrade` keeps apps and data.

- `/dynamicupdate enable` downloads the latest setup and compatibility updates first; use `disable` for servers without internet access.

- `/compat ignorewarning` continues past dismissible warnings only; hard blocks still stop setup.

- `/eula accept` is required with `/quiet`.

- `/copylogs` uploads logs to the share if setup fails.

Run the whole Windows Server 2025 in-place upgrade from a console session or a scheduled task, not from an RDP session you expect to keep, and test the exact command on a lab copy of the server first.

## Upgrade through Windows Update (feature update)

Since spring 2026 Microsoft offers Windows Server 2025 as an opt-in feature update in Windows Update, so a server can upgrade in place without an ISO. It keeps roles, apps and data exactly like a media upgrade. The offer only goes to Windows Server 2019 and 2022; Windows Server 2012 R2 and 2016 can still upgrade directly to 2025, but only from installation media.

| Current version | Windows Update path to 2025 | Minimum update before the offer appears |
| --- | --- | --- |
| Windows Server 2022 | Yes | 2026-03 cumulative update KB5078766 or later |
| Windows Server 2019 | Yes | 2026-03 cumulative update KB5078752 or later |
| Windows Server 2016, 2012 R2 | No (use the ISO) | Not applicable |

### Before you opt in

- **Licensing.** Volume licence customers with active Software Assurance on 2019 or 2022 do not need to buy a 2025 key. Retail and OEM licences need a Windows Server 2025 product key. After the upgrade, activate with KMS, Active Directory-based activation or MAK (`slmgr` or VAMT); if you use KMS, load a Windows Server 2025 key on the KMS host first.

- **Free space.** Microsoft asks for at least 30 to 40 GB free on the system disk and calls low free space the leading cause of failed in-place upgrades.

- **Time.** Microsoft’s estimate is about two hours per server, including the backup or snapshot.

- **Not for domain controllers or single cluster nodes.** Use a clean install for DCs (see below) and Cluster OS Rolling Upgrade for clusters.

- **Connectivity.** The server must be able to reach Windows Update to receive the offer.

- **Who can start it.** Check your Group Policy so non-administrators cannot scan for and install updates on servers.

### Enable the offer

Install the cumulative update from the table, restart if asked, back up the server and stop its applications. Then add Microsoft’s opt-in value from an elevated PowerShell prompt:

```
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AllowWindowsServerFeatureUpdate"
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AllowWindowsServerFeatureUpdate" -Name "AllowWindowsServerFeatureUpdate" -PropertyType DWord -Value 1
```

Confirm it with `Get-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AllowWindowsServerFeatureUpdate"`. To set it on many servers, Microsoft points to Group Policy: a registry item under **Computer Configuration » Preferences » Windows Settings » Registry** in a GPO linked to a dedicated upgrade OU does the job and keeps the offer away from servers you are not ready to move.

### Run the upgrade

- **Desktop Experience:** open **Settings » Windows Update**. When the Windows Server 2025 banner appears, select **Download and install**, read the Important Information dialog (pricing, licence terms, privacy) and select **Accept and install**. The server restarts during the upgrade.

- **Server Core:** run `sconfig`, choose option **6** (Install updates), then option **3** (Feature updates), and answer **Y** to the Windows Server 2025 feature update.

Nothing installs on its own: the opt-in value only makes the offer visible, and an administrator still has to start it.

### After the upgrade

- Check the version with `Get-ComputerInfo -Property WindowsProductName` and test every application. If something is broken, restore the backup or snapshot.

- Activate the server (KMS, Active Directory-based activation or MAK) and confirm with `slmgr /dlv`.

- Review telemetry settings and any loopback adapter configuration, which Microsoft calls out after this upgrade.

- Run Windows Update again for the latest Windows Server 2025 updates.

- Delete `C:\Windows.old` to free space only after the server has proven stable.

- If the feature update fails, read `C:\Windows\Panther\setupact.log` and `setuperr.log` or run SetupDiag against them.

## Domain controllers

Microsoft’s upgrade guidance is clear: do not use in-place upgrade for servers running AD DS. It is technically possible, but an upgraded DC does not get the Active Directory performance and feature improvements of a clean Windows Server 2025 installation. The recommended path is:

- Raise the forest and domain functional levels to at least Windows Server 2016. Promoting a Windows Server 2025 replica DC requires it.

- Install a clean Windows Server 2025 server and promote it. Server Manager and `Install-ADDSDomainController` run the forest and domain preparation automatically.

- Move FSMO roles, DNS clients and DHCP options to the new DC.

- Demote the old DC and remove its role.

If you still decide to upgrade a DC in place, adprep does not run by itself. Run `adprep /forestprep` once per forest (as Enterprise, Schema and Domain Admin, on the schema master) and `adprep /domainprep` once per domain, from the `\support\adprep` folder of the Windows Server 2025 media, and let them replicate before starting setup on the DC. Take a system state backup first and check replication with `repadmin /replsummary` before and after.

## Roll out to many servers

Treat a fleet upgrade as a small project rather than a series of one-off jobs:

- Group servers by role and application, and pick one low-risk pilot server per group.

- Clone each pilot (or restore its backup) into an isolated test network and run the full Windows Server 2025 in-place upgrade there first. Record the duration, the scan result and every manual fix.

- Upgrade the pilots in production, wait a week, and review event logs, monitoring and user feedback.

- Upgrade the rest in waves, using the same `setup.exe` command line or the Windows Update opt-in, and keep a list of which servers are done.

## Role caveats

| Role or feature | What to do |
| --- | --- |
| Failover Clustering | Cluster OS Rolling Upgrade, one version at a time; not a standalone in-place upgrade |
| Hyper-V | Shut down or move VMs; update VM configuration versions afterwards with Update-VMVersion once you no longer need to move them back |
| NIC Teaming (LBFO) | Remove before, re-create after |
| Remote Desktop Services, WSUS, ADFS, Certificate Services | Check the role migration matrix and vendor guidance; test on a copy first |
| Third-party agents | Confirm support; reinstall if the vendor recommends it |

## Verify it works

```
Get-ComputerInfo -Property WindowsProductName, OsVersion, OsBuildNumber, WindowsEditionID
slmgr /dlv
Get-WindowsFeature | Where-Object Installed
Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' }
Get-WinEvent -FilterHashtable @{LogName='System'; Level=1,2; StartTime=(Get-Date).AddHours(-3)}
```

- The product name should read Windows Server 2025 with the expected edition.

- `slmgr /dlv` should show the licence as activated. If it is not, install the right key and run `slmgr /ato`.

- Compare installed features and automatic services with the lists you saved in Step 1.

- Re-create NIC teams, resume BitLocker if it did not resume automatically (`Resume-BitLocker -MountPoint C:`), start VMs, and test every application and client connection.

- Install the latest Windows Server 2025 cumulative update.

## Troubleshooting

| Symptom | Cause | Fix |
| --- | --- | --- |
| Only “Nothing” can be kept | Edition, language or Core/Desktop mismatch, or unsupported source | Choose the matching image index; use media in the installed language |
| Scan returns 0xC1900208 | Incompatible app or driver | Read CompatData_*.xml, remove or update the item |
| Setup rolls back at 30 to 70 percent | Driver, filter driver or antivirus problem | Run SetupDiag, check setuperr.log, remove the agent and retry |
| Feature update not offered | Missing March 2026 CU or opt-in value | Install the CU, set the registry value, check for updates |
| Not activated after upgrade | KMS host cannot activate 2025 or wrong key | Update the KMS host key or install a MAK/retail key |
| No network after upgrade | NIC team or old driver | Use the console, install the vendor driver, re-create the team |

## Roll back or undo

If setup fails before completion, it rolls the server back to the previous version automatically and writes the reason to the Panther logs. Once a Windows Server 2025 in-place upgrade has completed and you have signed in, treat your backup or VM checkpoint as the rollback path: restore it if applications do not work. Keep the checkpoint only for a short test period, then delete it, because long-lived checkpoints degrade disk performance and, on domain-joined servers, a restored checkpoint may have an outdated computer account password.

## Windows Server 2025 in-place upgrade at a glance

**Official documentation:** [Windows Server upgrade overview](https://learn.microsoft.com/en-us/windows-server/get-started/upgrade-overview), [Perform an in-place upgrade of Windows Server](https://learn.microsoft.com/en-us/windows-server/get-started/perform-in-place-upgrade), [Upgrade domain controllers to a newer version of Windows Server](https://learn.microsoft.com/en-us/windows-server/identity/ad-ds/deploy/upgrade-domain-controllers).

**Related guides:** [Install and promote a Windows Server 2025 domain controller step by step](/guides/windows-server-2025-domain-controller/) · [Raise AD Functional Level Safely: Forest and Domain](/guides/raise-ad-functional-level/) · [Convert Windows Server evaluation/edition with DISM](/guides/windows-server-convert-evaluation-edition/).

## Frequently asked questions

### Which versions can upgrade directly to Windows Server 2025?

Non-clustered servers running Windows Server 2012 R2, 2016, 2019 or 2022 can upgrade directly. Failover clusters using Cluster OS Rolling Upgrade can only move one version at a time.

### Can I upgrade a domain controller to Windows Server 2025 in place?

It is technically possible, but Microsoft recommends against it. Promote a clean Windows Server 2025 DC and demote the old one; if you do upgrade in place, run adprep /forestprep and /domainprep manually first.

### How do I get the Windows Server 2025 upgrade from Windows Update?

On Windows Server 2019 or 2022 with the March 2026 cumulative update or later, add the AllowWindowsServerFeatureUpdate opt-in registry value, then click Download and install on the offer in Settings, Windows Update.

### Can I change from Standard to Datacenter during the upgrade?

Yes. Select a Datacenter image and use a Datacenter key. Moving from Datacenter to Standard is not supported.

### What does setup.exe /compat scanonly do?

It runs Windows Setup’s compatibility checks without upgrading and exits with a code. 0xC1900210 means no issues were found; other codes point to apps, disk space or an unavailable upgrade choice.
