How to Perform an In-Place Upgrade to Windows Server 2025

Microsoft now supports in-place upgrades to Windows Server 2025 from Windows Server 2012 R2 and later

Published: Jan 17, 2025

Servers Hero

SHARE ARTICLE

In this post, I will demonstrate how to perform an in-place upgrade to Windows Server 2025 from one of your existing Windows Servers. Reminder: Microsoft fully supports in-place upgrades to Windows Server 2025 from Windows Server 2012 R2 and later versions.

In this article, I’ll show you how to perform the upgrade from the command line. Using this method, you can automate in-place upgrades to Windows Server 2025 across many devices.

Initial preparation and prerequisites for an in-place upgrade to Windows Server 2025

Make sure the ISO file you downloaded or have contains the edition of Windows Server 2025 you need (Standard, Datacenter). Also, verify that you have an official product activation key or confirm that your network has an existing Key Management Services (KMS) server to auto-activate your server.

With that out of the way, go ahead and insert a USB stick with the Windows Server 2025 installation media (ISO) in your server or use your virtualization software to mount the ISO to one of your virtual servers. Here, I am adding the ISO to my ‘WS22-DC4’ VM running Windows Server 2022.

Using Hyper-V Manager to mount the Windows Server 2025 ISO for my in-place upgrade to Windows Server 2025
Using Hyper-V Manager to mount the Windows Server 2025 ISO for my in-place upgrade to Windows Server 2025 – Image Credit: Michael Reinders/Petri

Before running Windows Setup on the server you want to upgrade, let’s collect some diagnostics for troubleshooting purposes in the event the Feature Update is unsuccessful. Let’s run the following Get-ComputerInfo, systeminfo.exe, and ipconfig commands to collect some important information:

Get-ComputerInfo -Property WindowsBuildLabEx,WindowsEditionID | Out-File -FilePath .\computerinfo.txt

systeminfo.exe | Out-File -FilePath systeminfo.txt

ipconfig /all | Out-File -FilePath ipconfig.txt
Running some PowerShell commands for potential troubleshooting purposes
Running some PowerShell commands for potential troubleshooting purposes – Image Credit: Michael Reinders/Petri

Here is the output for the last two commands above.

Some additional PowerShell commands to gather server info before the upgrade - Image Credit: Michael Reinders/Petri
Some additional PowerShell commands to gather server info before the upgrade – Image Credit: Michael Reinders/Petri

Run Windows Setup to perform an in-place upgrade to Windows Server 2025

We’re ready to start. Let’s open a PowerShell console with administrative rights.

  • Right-click the Start button
  • Choose ‘Windows PowerShell (Admin)‘.

First, I’ll type ‘D:‘ to go to the D: drive (where the Windows Server 2025 ISO is mounted). A quick ‘dir‘ command shows the setup.exe file is there. Next, we begin with this command to run Setup as quietly as possible.

.\setup.exe /auto upgrade /quiet /imageindex 4 /DynamicUpdate Disable /Compat IgnoreWarning /eula accept
Good evidence Windows Setup is proceeding...SetupHost.exe is the Windows Setup main process - taking up good CPU time
Good evidence Windows Setup is proceeding…SetupHost.exe is the Windows Setup main process – taking up good CPU time – Image Credit: Michael Reinders/Petri
  • ‘/auto upgrade’ tells Windows Setup to perform an in-place upgrade, preserving all roles, and applications
  • The ‘/imageindex 4’ tells Windows Setup to choose ‘the 4th’ Windows Server image in the ISO. There are 4 images on the RTM ISO – Standard (Core), Standard (Desktop Experience), Datacenter (Core), and Datacenter (Desktop Experience). I chose 4, the last one.
  • ‘/DynamicUpdate disable’ tells Setup NOT to go to the Internet to get updated setup files. This preserves the ‘quiet’ process for Setup
  • ‘/Compat IgnoreWarning’ tells Setup to ignore any compatibility warnings. Again, a hard block will halt Setup
  • Finally, the ‘/eula accept’ says to Accept the licensing agreement explicitly

Without any further prompts from me, the server rebooted and the offline phase of the upgrade continues. As Setup finishes, the new Windows Server 2025 login screen is shown. I log in again and come to the Desktop. Success!

We have confirmed we're running Windows Server 2025. Three of my five DCs are now running WS2025
We have confirmed we’re running Windows Server 2025. Three of my five DCs are now running WS2025 – Image Credit: Michael Reinders/Petri

Install the latest patches after an in-place upgrade to Windows Server 2025

You need to run Windows Update to get the latest patches. To continue in the ‘command-line’ only vein, open the Terminal App with admin rights:

  • Right-click the Start button
  • Choosing ‘Terminal (Admin)
Launching Terminal to run SConfig... to install the latest patches after an in-place upgrade to Windows Server 2025
Launching Terminal to run SConfig… to install the latest patches after an in-place upgrade to Windows Server 2025… – Image Credit: Michael Reinders/Petri
  • Type in ‘sconfig‘ to open the ‘Server Config’ command-line utility program.
'SConfig' - Server Config command-line utility
‘SConfig’ – Server Config command-line utility – Image Credit: Michael Reinders/Petri
  • Choose ‘6) Install updates’
  • then ‘1) All quality updates’ to check for all available updates.
  • You can pick and choose a specific update or choose to install them all.

Final tasks

I logged into the server and confirmed a few things. I ran a PowerShell command again from my Windows 11 24H2 workstation client, before and right after the upgrade of the domain controller. It seems to have worked.

image 20
Confirming domain controller version status with PowerShell – Image Credit: Michael Reinders/Petri

As you can see, ‘WS22-DC4‘ went from Windows Server 2022 Datacenter to Windows Server 2025 Datacenter. Success!

There are some general steps you should perform after an upgrade like this. Check the Event Viewer for any Critical or Error events. Also, navigate to Settings -> Windows Update and make sure you install all updates, reboot, and repeat. Wait until checking for updates yields no new updates.

SHARE ARTICLE