Windows 10 RollBack... I mean OSUninstall

USERVOICE to have this function properly natively - Please upvote : OSUninstall - Make ConfigMgr Aware of going back to previous builds

Update: 2019.02.01 - Added Manual Fix for someone who did OSUninstall and CM Client is "hosed"... at bottom.

This is a topic I have found almost no documentation or blog posts on the topics of Rollback or OSUninstall. I started on the Docs Site, reading up on the rollback command, but later found out that it was incorrect and it lead me down a rabbit hole of abysmal self loathing as I spent hours on something simple and never was able to get it working. This Yellow Highlighted section is what I was assuming as true, when in fact... total malarkey.

So now knowing that the setuprollback.cmd file has NOTHING to do with Post Upgrade Rolling Back to Previous Build... you know, this dialog below, I had to come up with other ways to trigger actions during a "roll back" (OSUninstall) scenario.

So that in the Microsoft IT world is not a "Roll Back", it is considered an "OSUninstall", and in 1803, they added DISM commands for it. (Which Mike Terrill demonstrated at MMSDE)

So if you run this command, it does rollback... I mean OSUninstall back to previous build number, and in my lab, it's pretty darn quick. Being able to trigger it from a script or ... task sequence... gives you the flexibility needed to build other automation around it to fix issues created by reverting back... what are these issues you're referring to Gary?.. Continue reading..

This process will bring your machine back in time to Just before you started the OS Upgrade Step in your TS, which means, when you roll back, your client is broken (service disabled and in provisioning mode), the machine thinks it is in the middle of a Task Sequence, and if you set a lock screen & changed legal text to prevent users logging on during the upgrade, those are back too. I then had a laundry list of things to fix after the "roll back", to have a working Windows 10 machine, with functional SCCM Client, and "Clean" user experience.

To Fix all of these issues in an automated way had me being a bit creative with scripts, scheduled tasks, and inserting registry keys into offline media (think windows.old). I finally got it after a day or two of tinkering... now to create our own PowerShell Form to collect user data as to why they are rolling back.

Stay tuned for the full solution, which will be covered at MMS 2019 at MOA, with a technical blog post and downloads available once MMS draws to a end....

-------------------------------------- MANUAL FIX--------------------------------------------------------

How to Resolve Manually, if you've run into this issue (you can combine this all into one script, which is what I do in our internal solution)

  1. Remove Computer from Provisioning Mode:
    1. Invoke-WmiMethod -Namespace "root\ccm" -Class "SMS_Client" -Name "SetClientProvisioningMode" $false

  2. Run CCMEval.exe (C:\Windows\CCM\CcmEval.exe) to restore client's services and get it functional
    1. Wait awhile for the CcmEval to do it's magic... once you see the Software Center dialog popup saying something is downloading and installing, then you can continue on... or wait 5-10 minutes.
  3. Reset Task Sequence to remove it from the "Installing" Task Sequence Status shown in Software Center
    1. Post HERE:
    2. Run the Function "Reset-TaskSequence" from that long script (Lines: 166-215)

      Once you run that function, it will go from "Installing" as it shows above to "Failed". 
  4. Optional: You can then delete the execution history for your IPU Task Sequence, so it doesn't show up as "Failed".  It will return to the "Available" Status.
    1. Delete Key: HKLM\SOFTWARE\Microsoft\SMS\Mobile Client\Software Distribution\Execution History\System\(IPU Package ID)

Or.. Wait awhile, and have a fully automated solution which does all this for you, as well as capture why the user Reverted:



Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.