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 Lab, MDT, Microsoft Deployment Toolkit, SCCM, System Center, System Center Configuration Manager, Training, Windows 10. Bookmark the permalink. 2 Comments.