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

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

Upgrade from Windows Server 2019/2022 to 2025 while preserving configurations, applications, and data. Complete step-by-step guide with verification commands.

Evan MaelEvan Mael
March 26, 2026 15 min
mediumwindows-server 10 steps 15 min

Why Upgrade to Windows Server 2025?

Windows Server 2025 represents Microsoft's latest server operating system, bringing enhanced security features, improved performance, and extended support lifecycle. An in-place upgrade preserves your existing configurations, installed applications, user data, and server roles while transitioning to the new platform. This approach minimizes downtime and reduces the complexity typically associated with server migrations.

What Makes In-Place Upgrades Different from Clean Installations?

Unlike clean installations that require rebuilding your entire server environment, in-place upgrades maintain your current setup while updating the underlying operating system. This method preserves Active Directory configurations, IIS websites, installed applications, user profiles, and custom settings. However, it requires careful planning and thorough testing to ensure compatibility and system stability.

Which Windows Server Versions Support Direct Upgrade to 2025?

Microsoft supports direct in-place upgrades from Windows Server 2012 R2, 2016, 2019, and 2022 to Windows Server 2025. The upgrade path must maintain the same or higher edition level - for example, you can upgrade from Standard to Datacenter, but not from Datacenter to Standard. Both Server Core and Desktop Experience installations are supported, though you cannot change between these installation types during the upgrade process.

Implementation Guide

Full Procedure

01

Assess Current System and Prepare for Upgrade

Before starting the upgrade, you need to document your current system configuration and ensure compatibility. This step prevents surprises during the upgrade process.

Open PowerShell as Administrator and run the following command to check your current Windows version:

Get-ComputerInfo | Select-Object WindowsProductName, WindowsVersion, WindowsBuildLabEx, WindowsEditionId

Next, document all installed roles and features that need to be preserved:

Get-WindowsFeature | Where-Object {$_.InstallState -eq 'Installed'} | Format-Table DisplayName, Name -AutoSize

Export this list to a file for reference:

Get-WindowsFeature | Where-Object {$_.InstallState -eq 'Installed'} | Export-Csv -Path C:\temp\installed-features.csv -NoTypeInformation
Pro tip: Take screenshots of your Server Manager dashboard and any custom configurations before proceeding. This visual reference will help you verify everything is working post-upgrade.

Verification: Confirm you have a complete list of installed features and your current Windows version is documented. The output should show Windows Server 2019 or 2022 with specific build numbers.

02

Stop Critical Services and Create System Backup

Critical services like backup software can interfere with the upgrade process. Stop these services now to prevent corruption or upgrade failures.

Stop common services that may cause issues:

# Stop Veeam services if installed
Get-Service | Where-Object {$_.Name -like "*Veeam*"} | Stop-Service -Force

# Stop antivirus services (example for Windows Defender)
Stop-Service -Name "WinDefend" -Force

# Stop any custom backup or monitoring agents
# Replace with your specific service names
Stop-Service -Name "YourBackupService" -Force

Verify services are stopped:

Get-Service | Where-Object {$_.Name -like "*Veeam*" -or $_.Name -eq "WinDefend"} | Select-Object Name, Status

Create a system state backup using Windows Server Backup:

# Install Windows Server Backup if not already installed
Install-WindowsFeature -Name Windows-Server-Backup

# Create system state backup (adjust path as needed)
wbadmin start systemstatebackup -backupTarget:E:\ -quiet
Warning: Never skip the backup step. In-place upgrades can fail, and without a backup, you may lose your entire server configuration. Allow 30-60 minutes for the backup to complete.

Verification: Run Get-Service to confirm critical services are stopped, and check that your backup completed successfully with wbadmin get versions.

03

Mount Windows Server 2025 ISO and Verify Setup Files

Mount the Windows Server 2025 ISO file and verify you have the correct edition that matches your current installation. Edition mismatches will prevent the in-place upgrade option from appearing.

Mount the ISO file (replace path with your actual ISO location):

# Mount ISO using PowerShell
$ISOPath = "C:\ISOs\WindowsServer2025.iso"
Mount-DiskImage -ImagePath $ISOPath

# Get the drive letter of the mounted ISO
$DriveLetter = (Get-DiskImage -ImagePath $ISOPath | Get-Volume).DriveLetter
Write-Host "ISO mounted to drive: $DriveLetter"

# Navigate to the mounted drive
Set-Location "${DriveLetter}:"
dir

Verify the setup files are present and check the available editions:

# List available Windows editions in the ISO
dism /Get-WimInfo /WimFile:sources\install.wim

The output will show index numbers for different editions:

  • Index 1: Windows Server 2025 Standard (Server Core)
  • Index 2: Windows Server 2025 Standard (Desktop Experience)
  • Index 3: Windows Server 2025 Datacenter (Server Core)
  • Index 4: Windows Server 2025 Datacenter (Desktop Experience)
Pro tip: Note the index number for your target edition. You'll need this if you choose the command-line upgrade method. Standard can upgrade to Datacenter, but not vice versa.

Verification: Confirm the ISO is mounted and you can see setup.exe in the root directory. The DISM command should show the available Windows Server 2025 editions.

04

Run Pre-Upgrade Compatibility Check

Before starting the actual upgrade, run the setup compatibility check to identify potential issues. This step helps you address problems before they cause upgrade failures.

From the mounted ISO drive, run the setup with compatibility check only:

setup.exe /Compat ScanOnly

This will launch the Windows Setup wizard in compatibility check mode. Follow these steps:

  1. Click "Next" when the setup starts
  2. Enter your Windows Server 2025 product key when prompted
  3. Accept the license terms
  4. The setup will scan for compatibility issues

Review any compatibility warnings or errors. Common issues include:

  • Incompatible applications that need to be uninstalled
  • Hardware drivers that may not work with Server 2025
  • Features or roles that aren't supported in the new version

Address any critical issues before proceeding. For non-critical warnings, you can choose to ignore them during the actual upgrade.

Warning: If the compatibility check shows critical errors, resolve them before proceeding. Ignoring critical compatibility issues can result in a failed upgrade or unstable system.

Verification: The compatibility check should complete without critical errors. Make note of any warnings that you'll need to address post-upgrade.

05

Perform the In-Place Upgrade Using GUI Method

Now perform the actual upgrade using the graphical interface. This method provides more control and visibility into the upgrade process.

From the mounted ISO drive, run setup as Administrator:

setup.exe

Follow these steps in the Windows Setup wizard:

  1. Get important updates: Choose "Download updates, drivers and optional features" for the latest compatibility updates
  2. Product key: Enter your Windows Server 2025 product key
  3. License terms: Accept the license agreement
  4. Choose what to keep: Select "Keep personal files and apps" - this is the key option for in-place upgrade
  5. Ready to install: Review the summary and click "Install"
Pro tip: If you don't see the "Keep personal files and apps" option, it means there's an edition mismatch or compatibility issue. Go back and verify you're using the correct ISO edition.

The upgrade process will take 1-3 hours depending on your system. The server will restart multiple times automatically. You'll see progress screens showing:

  • Copying Windows files
  • Installing features and drivers
  • Configuring settings
  • Installing updates

Do not interrupt this process or power off the server during upgrades.

Verification: After the final restart, you should see the Windows Server 2025 login screen. The upgrade is complete when you can log in successfully.

06

Alternative: Perform Automated Command-Line Upgrade

For environments where you need to automate the upgrade or prefer command-line control, use this method instead of the GUI approach.

From an elevated PowerShell prompt on the mounted ISO drive, run:

# For Windows Server 2025 Datacenter Desktop Experience
.\setup.exe /auto upgrade /quiet /imageindex 4 /DynamicUpdate Disable /Compat IgnoreWarning /eula accept

# For Windows Server 2025 Standard Desktop Experience
.\setup.exe /auto upgrade /quiet /imageindex 2 /DynamicUpdate Disable /Compat IgnoreWarning /eula accept

Command parameters explained:

  • /auto upgrade - Performs in-place upgrade keeping all settings and apps
  • /quiet - Runs without user prompts
  • /imageindex 4 - Specifies Datacenter Desktop Experience (adjust as needed)
  • /DynamicUpdate Disable - Skips downloading updates during setup
  • /Compat IgnoreWarning - Bypasses non-critical compatibility warnings
  • /eula accept - Automatically accepts license terms

Monitor the upgrade progress by checking the setup log:

# Monitor setup progress (run from another PowerShell window)
Get-Content C:\Windows\Panther\setupact.log -Wait -Tail 10
Warning: The /Compat IgnoreWarning parameter bypasses compatibility warnings. Only use this if you've already reviewed the warnings in the compatibility check step and determined they're acceptable.

Verification: The command will return to the prompt when setup begins. Monitor the setupact.log file for progress. The server will restart automatically when the upgrade completes.

07

Verify Upgrade Success and System Status

After the upgrade completes and you can log in, verify that Windows Server 2025 is running correctly and all your roles and features are intact.

Check the Windows version and build:

Get-ComputerInfo | Select-Object WindowsProductName, WindowsVersion, WindowsBuildLabEx, WindowsEditionId

# Alternative method
winver

Verify all previously installed roles and features are still present:

# Compare with your pre-upgrade export
Get-WindowsFeature | Where-Object {$_.InstallState -eq 'Installed'} | Format-Table DisplayName, Name -AutoSize

# Check specific critical roles (adjust for your environment)
Get-WindowsFeature | Where-Object {$_.Name -like "*IIS*" -or $_.Name -like "*AD-Domain*" -or $_.Name -like "*DHCP*"} | Select-Object DisplayName, InstallState

Verify system services are running:

# Check critical Windows services
Get-Service | Where-Object {$_.Name -in @("Spooler", "BITS", "Themes", "AudioSrv", "Dhcp", "DNS")} | Select-Object Name, Status

# Check domain controller services if applicable
Get-Service | Where-Object {$_.Name -like "*NTDS*" -or $_.Name -like "*KDC*"} | Select-Object Name, Status

Test network connectivity and domain membership:

# Test network connectivity
Test-NetConnection -ComputerName "8.8.8.8" -Port 53

# Verify domain membership (if domain-joined)
Get-ComputerInfo | Select-Object Domain, PartOfDomain

# Test domain controller connectivity (if applicable)
nltest /dclist:yourdomain.com

Verification: The Get-ComputerInfo command should show "Windows Server 2025" as the product name. All critical services should be running, and network/domain connectivity should work normally.

08

Reactivate Windows and Install Updates

After the upgrade, you need to reactivate Windows Server 2025 and install the latest security updates to ensure your system is fully protected.

Check current activation status:

# Check activation status
slmgr /xpr

# Get detailed licensing information
slmgr /dlv

If activation is needed, activate using your product key:

# Install product key (replace with your actual key)
slmgr /ipk XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

# Activate online
slmgr /ato

# For KMS activation (if using KMS server)
slmgr /skms your-kms-server.domain.com
slmgr /ato

Install Windows Updates:

# Install PSWindowsUpdate module if not present
Install-Module PSWindowsUpdate -Force

# Check for available updates
Get-WUList

# Install all available updates
Install-WindowsUpdate -AcceptAll -AutoReboot

# Alternative: Use Windows Update GUI
# Go to Settings > Update & Security > Windows Update

Verify activation and update status:

# Confirm activation
slmgr /xpr

# Check update history
Get-WUHistory | Select-Object Title, Date, Result | Sort-Object Date -Descending | Select-Object -First 10
Pro tip: Schedule a maintenance window for the Windows Updates installation, as it may require multiple restarts. Critical security updates are essential after any major OS upgrade.

Verification: The slmgr /xpr command should show "Windows is activated" and Get-WUHistory should show recently installed updates.

09

Restart Services and Validate Applications

Restart the services you stopped before the upgrade and validate that all your applications and server roles are functioning correctly.

Restart previously stopped services:

# Restart Veeam services if they were stopped
Get-Service | Where-Object {$_.Name -like "*Veeam*"} | Start-Service

# Restart Windows Defender
Start-Service -Name "WinDefend"

# Restart any custom services you stopped
Start-Service -Name "YourBackupService"

# Verify services are running
Get-Service | Where-Object {$_.Name -like "*Veeam*" -or $_.Name -eq "WinDefend"} | Select-Object Name, Status

Test critical server roles and applications:

# Test IIS if installed
if (Get-WindowsFeature -Name "IIS-WebServer" | Where-Object {$_.InstallState -eq "Installed"}) {
    Invoke-WebRequest -Uri "http://localhost" -UseBasicParsing
}

# Test DHCP if installed
if (Get-WindowsFeature -Name "DHCP" | Where-Object {$_.InstallState -eq "Installed"}) {
    Get-DhcpServerv4Scope
}

# Test DNS if installed
if (Get-WindowsFeature -Name "DNS" | Where-Object {$_.InstallState -eq "Installed"}) {
    Get-DnsServerZone
}

Validate Active Directory services if this is a domain controller:

# Check AD replication status
repadmin /replsummary

# Verify SYSVOL replication
dfsrdiag pollad

# Test domain controller functionality
dcdiag /v

Test application connectivity and functionality:

# Test SQL Server connectivity if installed
if (Get-Service -Name "MSSQLSERVER" -ErrorAction SilentlyContinue) {
    sqlcmd -S localhost -Q "SELECT @@VERSION"
}

# Test file shares
Get-SmbShare | Select-Object Name, Path, Description
Warning: Some applications may require reconfiguration after the OS upgrade. Test all critical business applications thoroughly before declaring the upgrade complete.

Verification: All services should start successfully, and application tests should return expected results. Domain controllers should pass dcdiag tests without critical errors.

10

Perform Final System Health Check and Documentation

Complete a comprehensive system health check and document the upgrade for future reference and compliance purposes.

Run a complete system health assessment:

# Check system file integrity
sfc /scannow

# Run DISM health check
Dism /Online /Cleanup-Image /CheckHealth
Dism /Online /Cleanup-Image /ScanHealth

# Check disk health
Get-PhysicalDisk | Get-StorageReliabilityCounter | Select-Object DeviceId, Temperature, ReadErrorsTotal, WriteErrorsTotal

# Verify event logs for critical errors
Get-EventLog -LogName System -EntryType Error -Newest 50 | Select-Object TimeGenerated, Source, EventID, Message

Document the upgrade completion:

# Create upgrade completion report
$UpgradeReport = @{
    "UpgradeDate" = Get-Date
    "PreviousVersion" = "Windows Server 2019/2022"  # Update based on your starting version
    "CurrentVersion" = (Get-ComputerInfo).WindowsProductName
    "BuildNumber" = (Get-ComputerInfo).WindowsBuildLabEx
    "ActivationStatus" = (slmgr /xpr | Out-String)
    "InstalledFeatures" = (Get-WindowsFeature | Where-Object {$_.InstallState -eq 'Installed'}).Count
}

$UpgradeReport | ConvertTo-Json | Out-File -FilePath "C:\temp\Server2025-Upgrade-Report.json"

# Export current system configuration
Get-ComputerInfo | Export-Clixml -Path "C:\temp\Post-Upgrade-SystemInfo.xml"
Get-WindowsFeature | Where-Object {$_.InstallState -eq 'Installed'} | Export-Csv -Path "C:\temp\Post-Upgrade-Features.csv" -NoTypeInformation

Clean up upgrade files and temporary data:

# Clean up Windows Update files
Dism /Online /Cleanup-Image /StartComponentCleanup /ResetBase

# Clean temporary files
Get-ChildItem -Path $env:TEMP -Recurse | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue

# Dismount the ISO if still mounted
$ISOPath = "C:\ISOs\WindowsServer2025.iso"  # Adjust path
Dismount-DiskImage -ImagePath $ISOPath

Schedule regular maintenance tasks:

# Create scheduled task for monthly Windows Updates
$Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-Command Install-WindowsUpdate -AcceptAll -AutoReboot"
$Trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Sunday -At 3AM
$Settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
Register-ScheduledTask -TaskName "Monthly Windows Updates" -Action $Action -Trigger $Trigger -Settings $Settings -User "SYSTEM"
Pro tip: Keep the upgrade documentation and system exports in a secure location. This information will be valuable for troubleshooting, compliance audits, and planning future upgrades.

Verification: SFC and DISM scans should complete without errors. The upgrade report should be generated successfully, and all cleanup operations should complete without issues.

Frequently Asked Questions

Can I upgrade directly from Windows Server 2019 to Windows Server 2025?+
Yes, Microsoft fully supports direct in-place upgrades from Windows Server 2019 to Windows Server 2025. The upgrade process preserves your existing roles, features, applications, and data. You must ensure you have the correct edition (Standard to Standard or Datacenter) and a valid product key for Windows Server 2025. The process typically takes 1-3 hours depending on your system configuration and installed applications.
What happens to my installed applications during a Windows Server 2025 in-place upgrade?+
During an in-place upgrade, all installed applications and their configurations are preserved. However, some applications may require updates or reconfiguration after the upgrade to ensure compatibility with Windows Server 2025. Critical services like backup software should be stopped before the upgrade to prevent conflicts. After the upgrade, you'll need to restart these services and verify that all applications function correctly in the new environment.
How long does a Windows Server 2025 in-place upgrade take to complete?+
A typical Windows Server 2025 in-place upgrade takes between 1-3 hours, depending on your server's hardware specifications, the number of installed roles and features, and the amount of data on the system. The server will restart multiple times automatically during the process. Factors that can extend the upgrade time include slow storage, large amounts of data, and numerous installed applications that need to be migrated.
What should I do if the in-place upgrade to Windows Server 2025 fails?+
If the upgrade fails, Windows will attempt to roll back to your previous version automatically. However, this isn't always successful, which is why creating a complete system backup before starting is critical. If rollback fails, you can restore from your backup. Common causes of upgrade failures include incompatible applications, insufficient disk space, or hardware driver issues. Always run the compatibility check first and address any critical issues before attempting the upgrade.
Do I need to reactivate Windows Server 2025 after an in-place upgrade?+
Yes, you typically need to reactivate Windows Server 2025 after an in-place upgrade using your new product key. The activation process varies depending on your licensing method - retail keys can be activated online, while volume license customers may use KMS activation. If you're upgrading within the same license channel (like from a volume license 2019 to volume license 2025), the process is usually straightforward. Check activation status with 'slmgr /xpr' and use 'slmgr /ato' to activate online.
Evan Mael
Written by

Evan Mael

Microsoft MCSA-certified Cloud Architect | Fortinet-focused. I modernize cloud, hybrid & on-prem infrastructure for reliability, security, performance and cost control - sharing field-tested ops & troubleshooting.

Discussion

Share your thoughts and insights

Sign in to join the discussion