GUI · OSD · Windows 10

Windows 10 Upgrade GUI – For ConfigMgr\SCCM


Three little words can change your life forever. Whoever said that originally clearly had a time machine because they’d experienced Windows 10 Upgrades. Microsoft have completely changed the game with Windows 10, providing regular releases that we all need to stay on top of.

This for a home user is simple! A quick scan to Windows Updates, and we get a whole chunk of information and pretty imagery inviting us in.

But, what about for the Enterprise?

Well, the ConfigMgr\SCCM team have done a superb job of giving us the ability to upgrade machines on mass, fully in our control with both Servicing Plans, and my preferred choice, Upgrade Task Sequences, and these work great!

But, for the end-user, they are left a little in the dark. They either get a windows update that takes an hour to install, numerous restarts and everything has suddenly changed. Or they get a task sequence dialog pop-up which to the uninitiated, can be a little daunting and uninformative.

What if instead, we empowered the user?

Make it Shiny

The idea

  • Make a GUI informative for users, to run whenever they please.
  • Pack it with information and customisation options.
  • Ability to run pre-upgrade Hardware Checks.
  • Ability to attempt remediation steps should Hardware checks fail.
  • Run outside and individual to the Task Sequence.
  • Increase upgrade success rate.

The Process

User Runs GUI > GUI Run Checks > GUI Restarts Machine > Task Sequence Is Run

What can it do?

Hardware Checks

The GUI now has four main checks built-in;

  • Hard Disk Space Check (default 20gb)
  • RAM Check (default 2gb)
  • Power Check (Battery etc)
  • Network Check – Ethernet\Wifi (Optional)
  • Supported Hardware Model Check (Optional)

These checks automatically run, giving the user dialog and information the whole way through. Should the Hard Disk Space Check fail, then it will move onto remediation. If the RAM check fails, then it informs the user why and they are left to exit.

These checks are completely pre-tasksequence. Halting and hopefully averting unnecessary failures before it even gets there.


Disk Space Check Failed


RAM Check Failed


When the GUI comes here because it’s detected the hard disk is too full, it attempts to remediate the problem by clearing & running;

  • C:\users\*\AppData\Local\Temp\*
  • C:\Windows\Temp\*
  • Dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase

For the majority of machines, this will free up a good chunk of space, gb’s at least, and hopefully enough to allow the machine to pass the checks and continue with the upgrade. If not, they are redirected to a screen to inform them, and to exit the upgrade GUI.

Final-Script \ Reboot

The last stage of the GUI does a few things..

  • Sets a ‘Windows 10 is Upgrading’ lock screen wallpaper (optional)
  • Configures legal text to inform anyone who attempts to logon (optional)
  • Blocks logins for any current users of the machine (optional)
  • Configures the Upgrade to take place at next startup (scheduled task)
  • Restarts the machine after a configurable timed countdown

This is all about 2 things, user experience, and success rate. Up till this point, we’ve given the user full control over their upgrade with this GUI, they’ve chosen to run it and have been informed of whats it’s going to do and how long its going to take. Now, we’re going to restart the machine to make sure we’re at a fresh boot with no one logged on, no dodgy programs running, completing any pending windows updates, and, we’re going to keep it that way while we run our upgrade.


And as per community request, if for whatever reason the Task Sequence fails to launch, then you can specify a wallpaper to match;



You can, of course, change the majority of settings and content in this GUI via the main Settings.config file.

Title Bar, Company name & URL, Banner, Title, Main content, Learn More Button URL, Icon are all configurable.



Update! – v1.2.0 – Major work has been done to this section!

A single Settings.Config file exists. This is where you can make your changes.

This is located in the main root which holds all customisation as per above example, and as seen below;


True/False – Visible/Hidden – Quotes not required on any except Legal

In this same file, you also need to specify the Exact Name of your Upgrade Task Sequence.

This Task Sequence needs to be deployed to the machines or users (available or required).



SCCM Applications

Two applications are provided for you to import;

1. Windows 10 Upgrade GUI

This is the application you need to deploy to users\computers as Available. This runs the GUI. It has no content so does not need distributing. It purely runs the GUI from the local machine. Its detection is based on a file which will get installed during the Task Sequence (included in the sample).

2. Windows 10 Upgrade GUI Source Files

This app installs the source files for the GUI onto the target machine, and is a requirement for app 1. This needs to be distributed, but not individually deployed*.


Task Sequence Steps

We need to run some cleanup actions in the Task Sequence Post Upgrade. I’ve included a sample Task Sequence which includes these steps. You will need to add these into your Upgrade Task Sequence.


Final Touches

Desktop Shortcut

Lets really make this easy, and obvious to our users shall we?

Copy the shortcut link from Software Center for the deployed Windows 10 Upgrade GUI, or, as its seen in the catalogue, “Upgrade Windows 10”.


Take this url over to your group policy, and create a desktop shortcut..

This slideshow requires JavaScript.

*You’ll have noticed above I’ve based this targeting on the main executable. For this to preexist, you must predeploy the SourceFiles application to the machines.

And there we are.. much better;


Disable Logins

You have the option to specify in the Settings.Config file;


If this is True, then the GUI will add all current users of the machine, to a new local group called “Windows10UpgradeDisableLogon”.

Add this group (no domain prefix), to a logical group policy under ‘Deny Log On Locally”.


The outcome of this is as you’d expect, after the machine restarts, any current users of that machine will be unable to log in.


Back to the whole idea of this.. Improve User Experience and Increase Success Rate.

Is it a good idea to have the upgrade task sequence running whilst the user is logged in doing xyz working around it, moving the progress bar out the way (assuming its open) and then Bang! A completely unexpected reboot.

We can do better can’t we? Set this. Make everything better.

You can specify an account with wildcard to not add them to the blocked group. For instance if all your IT accounts are “EverythingSCCMITLogin1” “EverythingSCCMITLogin2” etc, (bit weird if they do), then you could specify;


This way, should IT need to login to the computer, they certainly can do.

Other Features

  • (BETA) Bitlocker – Disable Protections for x amount of reboots.
    • Configurable via Settings.Config. BETA means BETA. Let me know how you get on.
  • TopMost – Community Request, tick.


  • This has been solely tested on Windows 10 1511 and above.
  • This has 100% been designed for Windows 10 > Windows 10 upgrades.
  • Application must run from C:\Windows\EverythingSCCM\Win10UpgradeGUI


Technet Gallery


v1.3.0 | 22/05/2018 | Brand spanking new Exe’s – Now with 0 False Flags. Bug Fixes

v1.2.1 | 19/03/2018 | Network Check (Ethernet and/or Wifi), Dual Battery Support, Bug Fixes.

v1.2.0 | 12/03/2018 | Huge Update. More Hardware Checks, Power\Battery, Supported Hardware Check, TopMost, Bitlocker, Condensed into single Settings.Config, Complete Rewrite of RunTaskSequence.exe, More shininess, Faster, Loads of Bugs squashed and loads of logging.

v1.0.5 | 13/12/2017 | Bug fixed with LegalText still applying despite config set to False

v1.0.4 | 11/12/2017 | TS Sample Updated, wrong path in step.

v1.0.3 | 10/12/2017 | Bug fixed with final Upgrade button duplicate clicks.

v1.0.2 | 08/12/2017 | Removed dev variables from Settings.Config

v1.0.1 | 08/12/2017 | Base


I could not have made this GUI if it wasn’t for Stephen (FoxDeploy) Owen’s superb series on exactly that. If you’ve not seen his page, or even if you just want to learn how to make these things, go have a read;

100% of the shininess comes from the b-e-a-utiful Mahapps.Metro theme!

Cleanup scripts borrowed directly from Garytowns great post.

And, as ever, the many members of the WinAdminsSlack forum, who even if they didn’t directly realise, have helped with this! :D.

Especially Colin Wilkins for helping me at numerous stumbling points!

(If you would like an invite to this forum, please do let me know).

Feedback \ Bugs \ Future Features

There will undoubtedly be all three.

Should you have any feedback, good or bad, happen to find any bugs (I have no doubt there will be some), or can even just think of some great features to pack into future versions, let me know!

Rich Mawdsley


182 thoughts on “Windows 10 Upgrade GUI – For ConfigMgr\SCCM

  1. Thanks for sharing. I’ve been testing, and I noticed a couple of things:
    1. Install.ps1 — what do you think of some way to tell the user if they’re already on the Windows version the script checks for? It’s an edge case, but one that can be confusing to troubleshoot.
    2. The countdown button — this is wonky on my VM. I have plenty of resources, but the countdown number will go up and down, trending downward, until the minute is up.
    Thanks again. Nice work.


    1. Hi Ronald, would be quite easy to expand the scope of the install so include some extra touches. I’ll have a think around this.

      Regarding the countdown, I believe you’ve found a ‘feature’. Seems to happen if you click the button more than once, must be rerunning the code each time. I’ll get it patched and release an updated version.



      1. Thank you, this is an excellent piece of work. Cant wait to try it in my lab. Where can I download this config file?


  2. Also picked something up small.
    Was busy testing and on first login background was still showing the same under construction image.
    Had a look at the SMSTS.log and the commands from the sample TS points to a different folder so my TS failed to do the cleanup.
    The commandline in the TS points to C:\windows\everythingsccm\win10upgradegui where it should be
    The rest worked very nicely. Great job!


    1. Well that serves me right for being indecisive with the naming convention!

      TS sample updated in v1.0.4.

      Thanks for letting me know!

      Rich Mawdsley


      1. O yes another thing if possible. If you run it via shortcut and Software Center the focus does not go to the Windows 10 GUI Application window. On my test machine it stays behind Software Center. We are running SCCM 1706 if that helps in anyway :).


  3. I noticed today that if I set the legal notice to FALSE, the registry keys are still populated with what text is in the config file for those keys. I confirmed that on two machines.
    Also, the icon..if I change the path in the config file, it still seems to use the original RM.ico file. I have to name my ico file the same. That is confirmed only on one machine…
    Thank you!


    1. Thanks Ronald. I’ll take a look into this and will update soon.

      You’re correct about the RM.ico. I’ll look into making this a changeable setting. For the moment, if you want to chance the file name, you will need to update the reference to it in MyXaml.xml.

      Rich Mawdsley


  4. Hi,
    Nice GUI and idea. In addition to the AC/Batterycheck suggested by Ronald Montgomery, would it be possible to add a hardware check for Ethernet/WIFI. (We prefer in our environment that the upgrade should only be started if the device is wired)
    Kind Regards,



    1. Hi Jakob, Certainly sounds do-able, although perhaps not the Wifi.

      I’m thinking a check for Ethernet and confirm if can ping the domain. That should cover off connectivity.

      Rich Mawdsley


      1. Wifi is pretty easy to detect. I have used the below vb-code with good effect. Perhaps something you could incorporate in your Frontend?
        ‘On Error Resume Next
        Dim strComputer
        Dim objWMIService
        Dim colWiFi
        Dim colLAN
        Dim objWifi
        Dim objLAN
        Dim state
        Dim wireStatus
        Dim wifiStatus
        Dim strOut
        Dim intOutput
        ‘ Initialize Variables
        intOutput = 4
        state = “”
        strComputer = “.”
        Set objWMIService = GetObject(“winmgmts:\\” & strComputer & “\root\CIMV2”)
        Set colLAN = objWMIService.ExecQuery(“Select * From Win32_NetworkAdapter Where NetConnectionStatus = 2 and PhysicalAdapter = ‘True’”)
        ‘ Enumerate the wired adapters in WMI. Add 1 to output if wired adapter is in use.
        ‘Wscript.Echo(“Output starting at ” & intOutput)
        For Each objLAN in colLAN
        strOut = objLAN.NetConnectionID & ” ” & objLAN.Name & ” ” & objLAN.PhysicalAdapter
        if instr(lcase(objLAN.Name),”virtual”) = 0 and instr(lcase(objLAN.Name),”multiplex”) = 0 and instr(lcase(objLAN.Name),”bridge”) = 0 then
        ‘ Above line (if statement) is there to eliminate other extraneous adapters that
        ‘ still show up even though we are eliminating all but “physical” adapters. Some
        ‘ virtual adapters are still there, Microsoft being the biggest offender.
        ‘ Add to the line if necessary to remove other non-physical adapters.
        if instr(lcase(objLAN.NetConnectionID),”wireless”) > 0 or instr(lcase(objLAN.NetConnectionID),”wi-fi”) > 0 then
        intOutput = intOutput – 2
        ‘Wscript.Echo(strOut & ” connected. Output is now ” & intOutput)
        end if
        if instr(lcase(objLAN.NetConnectionID),”wireless”) = 0 and instr(lcase(objLAN.NetConnectionID),”wi-fi”) = 0 Then
        intOutput = intOutput – 1
        ‘Wscript.Echo(strOut & ” connected. Output is now ” & intOutput)
        end if
        end if


      2. Thanks Paul.

        Open question.. are people actually upgrading machines on wifi? My initial feelings are whilst the upgrade itself can of course be pre-cached and all.. actually once the TS is finished with the upgrade part its going to be unable to contact a Management Point due to lack of connectivity.

        If this is really how people are doing it, and its a check that’s wanted, I’m all for adding it.

        Stick a vote down;



      3. No, they don’t. But based on my experience from a large Customer where we are doing Windows 10 rollout right now is that 5-10% of the users THINK they are on Ethernet when they are in fact not. Most users doesn’t even know there’s a difference.
        So, we do a osd preflight check Before starting the upgrade, checking wifi, USB sticks in the computer, certified hardware etc before proceeding to notify the user of a potential upgrade problem.


  5. I can see one problem though with this, which is monitoring. Since the actual deployment to the clients is an Application and not the Tasksequence, I cannot really find a good way to monitor the progress or failure of the OSD, or am I missing something?
    I can see that it has failed yes, but I cannot see any details from the console as I can when monitoring a deployed tasksequence. Nor does the users screen leave any clue of that it has failed, it just sits there with a locked screen indefinetly.


    1. You will still be able to monitor the task sequence in the same way via the console, as you’re still deploying it.

      Regarding the lock screen.. Stay tuned..


      1. Hi Rich,

        Great article!
        Any news regarding alternative lockscreens or processes if the deployment fails?


  6. I am having trouble getting this to work correctly. The GUI launches but fails to start the task sequence after going through it. I have the correct ID’s in the Settings.Config file. When I look at the running.log file, it keeps waiting for the TS to start but it never does. Any ideas?


    1. Hi Chris, that’s odd. Can you confirm you can see the Task Sequence in Software Center normally? And it starts ok if you run it manually?



      1. I imported your TS and tried using that TS instead of ours (with the appropriate ID’s), but the same thing happened. Got the utter utter failure in the log file. Was using your imported applications as well. Running CM 1706, and was trying to go from Windows 10 1607 to 1703.


      2. Ok.. And lastly just confirm you’re running it from the default location of C:\Windows\EverythingSCCM\Windows10UpgradeGUI?

        If so, it really should be working!

        Are you on WinAdmins Slack? If so send me a message and I’ll forward you some powershell commands to test.. Or stick an email down here.



  7. Yes i see the TS there and it runs. I had it marked as a high impact task sequence, so I thought maybe that could have been stalling it, so I just turned that off. Don’t think it’s helping though.


  8. Thank you for a very nice tool!
    I’m running version 1.0.4 and have noticed that if I put more than one AdvertismentID in the Settings.Config file the TS never starts. If I put only one AdvertismentID it works fine. I’m upgrading windows 10 1607 to 1709 with CM 1706.


    1. Hi John,

      Thanks for the feedback.

      Thats strange, let me do some testing and I’ll get back to you.

      Rich Mawdsley


  9. FYI – the executable is getting quarantined by Cylance – partially because there is no publisher info and the executable is not signed.


    1. Thanks Matt. Shall look into it, although from my experience Cylance blocks anything and everything as standard! Ha!


  10. Hi,

    I wondered if you could put a disable bitlocker option into the program? Problem I’ve noticed is that when it re-boots users are being prompted to input there password as bitlocker is still active. We do a manage-bde -protectors -disable C: -RC 0 in the task sequence and record devices that were bitlockered so they can be reactivated after the upgrade but this is after the re-boot the GUI program initiates.


    1. Hi Richard,

      That’s a good point, and one I had not considered previously. I’ll take it into consideration in the next build.

      Side note separate from Gui.. does the inbuilt TS ‘Disable Bitlocker’ step not do the job for your current TS instead of the manage-bde command?



      1. Hi Rich,

        I tried with the inbuilt Disable Bitlocker but I found that the user still had to do 1 or 2 re-boots after the upgrade taking up to 15 minutes on some devices. I now do a check at the start of the task sequence and place a file on the C:\ Drive to indicate Bitlocker was active. This means if the update fails after bit-locker was disabled the marker is used to re-initiate Bitlocker after the last re-boot.

        We also use Direct Access so have had to put a wmi query in that causes the upgrade to fail at the start if the device is not connected locally. I use MSFT_DAConnectionStatus where status “1” might be worth a thought in your next update?


  11. Hi, was wondering if there is a way for the GUI and notification to detect installed language and display via that language? Thank You


  12. Hi Rich,
    Fantastic updates to the script…
    I’ve come across an issue trying to update a Lenovo X250 notebook and for some reason the GUI stops on ‘Plug me in! I need power’
    The problem is that the notebook is plugged into the mains and examining the log files shows the power state as ‘Power State: 2 2’
    Also, looking at the RunWindows10Upgrade.xml shows ‘DisallowStartIfOnBatteries’ and ‘StopIfGoingOnBatteries’ are both set to false, so not sure why it doesn’t allow me to continue..

    I’ve also checked with a Surface Pro 4 and this worked OK apart from no ‘Green Tick’ to say it passed the power check (allowed me to select ‘Next’ to continue the next step


    1. Hi Steve!

      That’s very odd! – That fact its returning ‘2 2’ sounds like the problem, as it should just be a singular ‘2’. Can you run the below powershell and confirm the result please?

      (Get-WmiObject -Class Win32_Battery -ea 0).BatteryStatus

      Also, the RunWindows10Upgrade.xml isn’t being used at this point, that’s the scheduled task which is called after the gui & restart, to start the Task Sequence.

      Rich Mawdsley


      1. Hi Rich,
        Thanks for the prompt reply.. running the command, I get:-
        for some reason, this model reports 2 batteries installed (even though there’s only one)
        name caption batterystatus

        54N1773 Internal battery 2

        54N1127 Internal battery 2

        If I enable the option to skip hardware checks, I cant proceed to the next step. After the welcome screen, I can click the ‘Next’ button but nothing works apart from ‘Cancel’


      2. Thanks Steve.

        OK that’s very interesting! Leave it with me a day or so and I’ll get this added so it can handle the possibility of dual batteries.

        Will also look into the other problem too!



      3. Hi Steve,

        Could you confirm another couple bits please so I can get this resolved. Just need to clarify if it’s returning ‘2 2’ as a string or if its an array.

        What returns from each of the below commands?

        (Get-WmiObject -Class Win32_Battery -ea 0).BatteryStatus | Select-Object -first 1
        ((Get-WmiObject -Class Win32_Battery -ea 0).BatteryStatus).Length

        Thank you,
        Rich Mawdsley


  13. Rich,

    I’ve also tried: –
    Get-WmiObject -Class BatteryStatus -NameSpace root\wmi)[0].poweronline
    which returns either $True or $False if connected to mains, which seems to work all the time


    1. Hi Steve,

      Checkout v1.2.1 now available to download.

      This should now work fine, but let me know how you get on.

      Rich Mawdsley


      1. Hi Rich,

        Managed to check with the same machine and the power/mains check works flawlessly..

        A couple of small cosmetic issues:-
        Cannot select the ‘Back’ button on hardware check screen
        On final screen, the count-down timer seems to jump up one line

        Many thanks…


      2. Hi
        Can you please point me to the download link , The one I am trying is nto working. Thanks!!


      1. Hi Rick,

        Thought so :-). I could have used it when we shall upgrade 30.000+ computers from Win 7 to Win 10.

        It’s a nice tool and the Gui works on windows 7 , but after restart it never starts the TS..



  14. Nice tool, but as Morten, but on windows 10, after restart it does not start the ts, any idea why not?


    1. Hi Stian,
      Can you confirm you are running the latest version? If so, check out the logs folder and it’ll hopefully reveal all.


      1. Yes, 1.21. What logs folder? None in c:\Windows\EverythingSCCM\Windows10UpgradeGUI


      2. After you run the GUI, a logs folder will instantly be created in that directory. If this is not happening, then I’d confirm this is definitely v1.2*.


    1. Ok, then the log folder will be created on first run.

      You’re calling the GUI via Software Center using the imported application?


  15. Here is what i Have done. created an Application in sccm, not package, all this does is running install.ps1 file. That runs fine creates C:\Windows\EverythingSCCM\Windows10UpgradeGUI folder, copies all files and folder to C:\Windows\EverythingSCCM\Windows10UpgradeGUI, then I run Windows10UpgradeGUI.exe


    1. Ok so you haven’t used the pre built applications?.. And sounds like you’re running manually (without admin rights?). I’d advise you import the applications provided as per the blog post, and run it via software centre which will in turn run it as system.


    1. Hi Christian,
      The desktop shortcut needs Configuring in group policy. Have you followed this part of the blog post?


      1. Ok and assuming youve based targeting on the files existence.. Do the files exist? I.e you’ve predeployed the source files?


      1. Thx and it detected as Trojan in environment. how did you created this Windows10UpgradeGUI.exe and RunTaskSequence.exe ? can we get source code for this exe’s?


      2. I’ve been submitting them to the majority of the main AV providers with every build release and they pass them. They’re powershell scripts converted to exe with PS2EXE. Which AV has flagged this for you? I will submit the code etc to them.


  16. We use defender and crowdstrike. if you don’t mind can you please provide that scripts(Windows10UpgradeGUI.exe and RunTaskSequence.exe)which you used for exe conversion. so that i can directly use that scripts rather exe’s.


    1. Haven’t had any problems with Defender myself, but I’ll submit it to Crowdstrike.

      I won’t be releasing the core powershell behind it as its been a long time in the making, and the finished product of the exe is what I’m releasing as I’m sure you can understand.


      1. Yep, I submit each version I make to the majority of those.

        If you have a better suggestion on how to create exe’s from powershell I’m all ears.

        Otherwise you can try PS2EXE yourself with any powershell script and 9 times out of 10 they get flagged by most AV!


  17. Hi Rich!
    Thanks for this amazing contribution to the Windows servicing community!

    Unfortuneately, windows10upgradegui.exe is still quarantined by AVs. Is there any upcoming solution for this?

    Another thing I came across when importing the 1.2.1 application, the runtasksequence.exe seems to have references to a non-existing folder (from a previous release). This is causing problems (visible in distmgr.log) when distributing the source files to the distribution points. Any ideas ?


    1. Hi Christian,

      Yes thanks for letting me know, working on a new release to resolve this now. Hopefully will release in a few days.

      Regarding the RunTaskSequence.exe, can you send me over the relevant distmgr.log please – I’ll address this in the next release also.

      Rich Mawdsley


  18. Hi,
    Are you currently working on something new or why is the download not accessible?
    When I click your link, Technet tell me that “This item is not yet published.”.
    That’s a pitty as I really wanted to test your script.


    1. Hi, yes, download currently unavailable due to AV’s falsely flagging it. Give me a few days! 🙂


      1. Hi Rich, any update on this? Was looking to try it out but there is no download available.


      2. Needing a great solution to upgrading windows 7. Came upon this site and it looks awesome! Any update status for the download?


      3. Download now available.. however this is only designed for Win10>Win10 upgrades.


      4. Hi,
        Is there any update on availability? Really keen to try this out at my school for the inevitable Windows 10 upgrade. Would be happy to add this to our AV white-list so the AV doesn’t pick it up.


  19. Hi, it’s me again.
    Thanks for releasing V1.3. 🙂
    Unfortunately I’ve got the same issue like Chris in December had. I have imported your applications
    and TS, deployed it like mentioned in your article, but the TS isn’t starting after reboot.
    RunTaskSequence.log only says “Retreiving TSName from File” (incl. spelling mistake :))

    I have tried with my own upgrade TS and with yours. Nothing happens after reboot and also if I start the scheduled task manually, nothing happens except of the one sentence in the log file.

    The TS is available in software center and can be installed through software center – but not with your GUI. 😦

    Do you have any ideas what could be wrong?


    1. Hi Volker,

      At that point in the script it’s only pulling in the variables in the Settings.config file.

      Only 2 scenarios I can think would make it halt in its tracks at that point.

      1) TS name is blank in Settings.config
      2) Script is running from a directory different then default “C:\windows\EverythingSCCM\Windows10UpgradeGUI”



      1. I thought that you will answer something like that. 😦
        The settings.config contains:
        TSName=Windows 10 1703 Upgrade
        Which is the name of your TS, haven’t changed anything there. The TS is deployed as available to the device and is visible in the software center..

        The scripts are located in C:Windows\EverythingSCCM\Windows10UpgradeGUI\.

        So everything looks ok, but it’s not working.


      2. This is the section of the RunTaskSequence.exe it’s getting stuck in:

        LogWrite "$Time - Retreiving TSName from File"

        $inputvariables = Get-Content "$scriptDirectory\Settings.config" | Foreach-Object{
        $var = $_.Split('=')
        New-Variable -Name $var[0] -Value $var[1]

        LogWrite "$Time - Execute-TaskSequence $TSName Script Started"

        Where $ScriptDirectory is “C:\Windows\EverythingSCCM\Windows10UpgradeGUI”.

        As you can see, it’s an odd place to get stuck. The only other thing I can think is perhaps the scheduled task does not have permissions to read the Settings.config file?



      3. Hi Rich,

        I have checked the event log of my test computer. There is an application error and a .NET runtime error in the application log every time when the task is running.

        Faulting application name: RunTaskSequence.exe, version:, time stamp: 0x5a4b1e5f
        Faulting module name: KERNELBASE.dll, version: 10.0.15063.483, time stamp: 0xaa6457d1
        Exception code: 0xe0434352
        Fault offset: 0x0000000000069e08
        Faulting process ID: 0x1284
        Faulting application start time: 0x01d3f65738f0b1c3
        Faulting application path: C:\Windows\EverythingSCCM\Windows10UpgradeGUI\RunTaskSequence.exe
        Faulting module path: C:\WINDOWS\System32\KERNELBASE.dll
        Report ID: 436e2848-4fa7-4ce6-a576-d022a2754c44
        Faulting package full name:
        Faulting package-relative application ID:

        Anwendung: RunTaskSequence.exe
        Frameworkversion: v4.0.30319
        Beschreibung: Der Prozess wurde aufgrund einer unbehandelten Ausnahme beendet.
        Ausnahmeinformationen: System.InvalidOperationException
        bei System.Windows.Forms.MessageBox.ShowCore(System.Windows.Forms.IWin32Window, System.String, System.String, System.Windows.Forms.MessageBoxButtons, System.Windows.Forms.MessageBoxIcon, System.Windows.Forms.MessageBoxDefaultButton, System.Windows.Forms.MessageBoxOptions, Boolean)
        bei System.Windows.Forms.MessageBox.Show(System.String)
        bei ..(System.Windows.Forms.ApplicationContext, System.String[])
        bei ..(System.String[])

        Is this normal?


      4. Thanks Volker, leave this with me, I’ll try and take a look in the next day or so.


      5. Hi Volker,

        Check out v1.3.1. I hope this resolves the issue, but let me know either way!

        Rich Mawdsley


  20. Hi There,
    Getting the Same Issue here.
    Application RunTaskSequence is failing with the above Error.
    OS is Windows 10 1607


    1. Hi Philipp,

      Check out v1.3.1. I hope this resolves the issue, but let me know either way!

      Rich Mawdsley


  21. Hi There,

    Getting the same error as Volker. This is on a fresh install of Windows 10 Education 1709 trying to test the upgrade path to Windows 10 Education 1803.

    Faulting application name: RunTaskSequence.exe, version:, time stamp: 0x5a4b1e5f
    Faulting module name: KERNELBASE.dll, version: 10.0.16299.371, time stamp: 0x6369e29f
    Exception code: 0xe0434352
    Fault offset: 0x0000000000014008
    Faulting process id: 0x10b8
    Faulting application start time: 0x01d3f7bbd3ade8a2
    Faulting application path: C:\Windows\EverythingSCCM\Windows10UpgradeGUI\RunTaskSequence.exe
    Faulting module path: C:\WINDOWS\System32\KERNELBASE.dll
    Report Id: e1518569-1e59-4763-9500-8f6f80053f4d
    Faulting package full name:
    Faulting package-relative application ID:

    Application: RunTaskSequence.exe
    Framework Version: v4.0.30319
    Description: The process was terminated due to an unhandled exception.
    Exception Info: System.InvalidOperationException
    at System.Windows.Forms.MessageBox.ShowCore(System.Windows.Forms.IWin32Window, System.String, System.String, System.Windows.Forms.MessageBoxButtons, System.Windows.Forms.MessageBoxIcon, System.Windows.Forms.MessageBoxDefaultButton, System.Windows.Forms.MessageBoxOptions, Boolean)
    at System.Windows.Forms.MessageBox.Show(System.String)
    at ..(System.Windows.Forms.ApplicationContext, System.String[])
    at ..(System.String[])


    1. Hi Gavin,

      Check out v1.3.1. I hope this resolves the issue, but let me know either way!

      Rich Mawdsley


    1. Hi Nick,

      Check out v1.3.1. I hope this resolves the issue, but let me know either way!

      Rich Mawdsley


  22. Getting same 2 application event viewer errors as Volker and Gavin. Using version 1.3.0 on Windows 10 1703.


    1. Hi Brian,

      Check out v1.3.1. I hope this resolves the issue, but let me know either way!

      Rich Mawdsley


  23. Suggestion: to keep everything dynamic, you should change both the task sequence item ‘Create Detection for GUI’ command line and the detection method for GUIDetection.txt in Win10UpgradeGUI deployment type to use the variable, %windir%, instead of static path to C:\Windows\.


      1. Another thing, I’ve noticed if RestartCountdownMin in Settings.config is set to ‘0’, none of the items the script is scheduled to run at T-60s will actually execute. 🙂 The items should be executed after the countdown.


      2. Hmm, that certainly sounds like a feature!

        I’m off for a few week now, but will tackle this when I return.



      3. One more thing, you need to add a ‘Remove lock screen registry key’ task sequence item under the Cleanup group or else the lock screen will display a blank wallpaper after the upgrade since the background file is deleted.

        cmd.exe /c REG DELETE “HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Personalization” /v LockScreenImage /f


  24. Hi Rich,

    Thanks for this very great tools.

    I have to translate all text in french but i cannot find a solution to translate when it’s wrong (for example “plug me” or “cannot find a network”

    I can translate the text when it’s ok (“like success”) but not when it’s wrong in the file .xml

    Can you help me please?

    best regard



    1. Hi Azopo,

      Assuming you have tackled the majority of text in the ‘MyXaml.xaml’, then anything left over is currently hard coded and can’t be changed.

      I’ll look into making this an option in future releases.



  25. Hi Richard, can you add a WelcomeMessage3 to the GUI? There are more verbiage I’d like to display to our users. 🙂


  26. The problem reported on 5 June 2018 has been resolved. The problem was that at the time of execution there was no active maintenance window.

    Thx and sorry


  27. Also, is there any way to make this unattended? Initially, I’d like to deploy the upgrade as optional and allow the user to step through the prompts. After a certain date, I’m going to make it mandatory. If it runs as a mandatory deployment (using some switch on the EXE), I’d like it to have a configurable countdown on the GUI informing the update will automatically start soon…and, once it does, it continues without requiring any input. The way it sits right now, the user has to click ‘next’/’continue’ through the GUI.

    More than likely, I will deploy the mandatory piece off hours, but I still would like to display an initial GUI about what’s happening and then, of course, the prevention of user login during the installation.


  28. This is very good! Thanks a lot for all the hard work.
    Two things – one question and one request:
    1. How does the network check work? I want it to stop the user from upgrading if there is no plugged in network cable.
    2. Please make it possible to localize all the text. A lot of my danish customers doesnt handle English very well.


    1. Thanks!

      For the network checks, both ethernet and WiFi, work by checking if the currently connected network matches the name provided in the configuration file.

      Regarding the languages, it’s on the list.. However it’s a massive task and virtually a complete rewrite of most components.. On the list nevertheless.

      Rich Mawdsley


  29. Hi,
    This works great from the initial testing that i have performed. Great work and it all looks very slick.
    We do have an issue though.
    I would really like to use the lock screen feature however, once the task sequence finishes it does not revert the settings back to our original settings of Windows Spotlight. I cannot even select it again after the build has finished.
    Have you got any ideas on how to resolve this as we quite like the Spotlight feature of the lock screen instead of a boring plain colour.
    Many thanks,
    Tony Bailey


    1. Hi Rich,

      I have managed to get a lock screen wallpaper back after the upgrade completes. I have had to create a task in the cleanup group, as it is left behind after the upgrade.

      cmd.exe /c REG DELETE “HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\Personalization” /v LockScreenImage /f

      I can now see Spotlight as an option in the personalize menu, however if i select the option it will always flip back to picture when exiting the menu and going back in, so never really applying it.

      We do not configure any policy settings for the lock screen and allow users to do what they like. They tend to just leave on Spotlight which is also what we prefer.

      Any help would be much appreciated as this is such a good product, we just won’t be able to use this if i cannot get this resolved.

      Many thanks



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 )

Facebook photo

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

Connecting to %s

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