Windows 10: In-Place Upgrade (Part 1 – Background)

With Windows 10 Microsoft is heavily promoting the in-place upgrade.  In fact, Microsoft used the in-place upgrade internally when moving their systems from Windows 8 to Windows 8.1.

I first heard about this during a TechEd Europe session (EM-B326).  Shortly after the session was made available the System Center Configuration Manager team posted a blog entry explaining the basics on doing this.

I thought I’d dig a little deeper and try to tie together the SCCM blog posting and the information from the TechEd presentation.

How Exactly Does This Work?

The task sequence breaks down into 4 main sections.


This section handles getting things set up for the upgrade.  The Check Readiness is a standard TS action that checks memory, CPU speed, etc.  The Stage Content copies the scripts required post-upgrade to the system (C:_vNextUpgrade).  The “heavy lifting” of this section is the PreSetup action.  This runs a PowerShell script (PreSetup.ps1).  It will remove the SCCM scheduled tasks for things like client health, disable the SCCM client service so that it doesn’t interrupt the upgrade process.

Upgrade the OS

Here is where the actual upgrade happens.  The action Upgrade Windows will execute this command line:

Setup.exe /Auto:Upgrade /Quiet /NoReboot /DynamicUpdate Disable /PostOobe %SystemDrive%_vNextUpgrade /PostRollback %SystemDrive%_vNextUpgrade

From the TechEd session “What’s New and Upcoming with OS Deployment in System Center Configuration Manager and the Microsoft Deployment Toolkit“, this is how the command breaks down:

/Auto:Upgrade – This instructs setup to perform an automated, unattended upgrade
/Quiet – Do not display the UI.  You won’t get wizard panes stepping you through the process
/NoReboot – Do not allow setup to reboot the system.  Since the reboot is being controlled by the task sequence allowing setup to reboot could break things.
/DynamicUpdate Disable – This will prevent setup from attempting to go out to Microsoft Update looking for hotfixes
/PostOobe %SystemDrive%_vNextUpgrade – Once setup has completed successfully, the folder to find “SetupComplete.cmd
/PostRollback %SystemDrive%_vNextUpgrade – Should the upgrade fail, setup will look to this folder for the “SetupRollback.cmd

Recover from Setup Failure
This action will be executed if the Upgrade Windows action fails.  It will run a PowerShell script that reverses the changes made by the PreSetup script.  It will re-enable the SCCM client health scheduled tasks, re-enable the SCCM client service, etc.

If the upgrade was successful, the Restart Computer action is performed and the system is rebooted.


Here is where the deployment work would happen.  In this example the task sequence is using the standard Install Software Updates action to install any updates approved in SCCM.  And the Cleanup action is removing the “_vNextUpgrade” working folder used during the upgrade process.  In a “real-world” deployment this section could include actions for installing new software, relocating the computer’s object into a new OU, installing printers.


The Trigger Rollback Failure action is used to allow a controlled failure of the task sequence and returns a specific failure code (425 in this case) so that it can be reported on easily.

So, that’s the basics on what is happening under the hood.   Now let’s put it into practice.





Posted on November 18, 2014, in MDT Lab Builder, Windows 10 and tagged , , , , , , , . Bookmark the permalink. 2 Comments.

  1. In regards to managing ISOs and their size, I found this on the website. It has been posted for awhile, but it is very cool. It tells how to shrink ISOs to by about 60% so they are much more portable,

    This sentence from the article says it all – “This is the story on how to store 183 GB of virtual machines in a single 16 GB file”


  2. Sorry, it should say “shrink by 90%” . I hit the wrong key


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: