Windows Splash Screen for the Task Sequence Progress




Lets face it, the Task Sequence progress bar is dated.  Does it work and serve a purpose, yes, does it look like Windows 98, heck yeah.

Picture credit: Adam Gross

As part of my quest to modernize it, I first google, found a couple good options:

I based it on Option 2, SMSAgents, it didn’t require an install, which we’d have to jump through hoops for, but scripts we can run all day.  Yeah, I also see some bad logic there.. but moving along…
Since I’ve based it on SMSAgent’s Script, PLEASE PLEASE read his post, it goes into more information that I’m not going to regurgitate here.

Changes I’ve made:

  • Made the text continue to loop entire time running
  • Added Step Names
  • Added Windows Upgrade Engine %
  • Have it Exit script if TS has Error and launches Error Dialog
  • Running it as System instead of User
    • Allow to pull in Task Sequence Variables
    • Changes many of the options to TS variables
      • Rotating Text
      • Color Scheme

I wanted it to be run during our in place upgrades, but it also works during OSD.  I have it monitor the setup engine to display a % during the upgrade, something CM Dialogs also added in 1902, however I’ve added a % complete vs just a status bar.  Glad they added it though!
Example task sequence progress with Windows upgrade progress


How it works… it’s a Task Sequence “Module”
Variables for each Text Line, SA_001 ….
The script will grab all variables and create an array of any variable values that the variable name starts with “SA_”

The color scheme is also created via variables.

Having a group with both of these sets, allows you to have different text and or color scheme during different task sequences.

Then we launch the script that creates the splash screen, using ServiceUI to make it show on the user’s screen.  Lastly, we disable the native progress UI.

The Splash Screen will now continue until:

  • Manual intervention: Alt + F4
    • This is really handy when you are doing testing, thankfully most users will probably never try this.
  • Error code. If step name = “Launch Custom Dialog”, it will exit the Script.  We are using error handling based on Adam Gross’s Better TS, which goes into more detail.
  • A reboot. (AKA end of Phase one which auto reboots)

Upgrade % Complete.  The Script monitors the step names, when the step name: “Upgrade Operating System. DO NOT TURN OFF YOUR PC”, once that step is triggered, it activates the “textbox” that monitors and updates the Setup Engine % Complete.

In the Parent TS:

I have a lot of notes in the actual script, hopefully everything makes sense.
You’ll need to modify a few items to match the name of the steps, or rename steps in your TS to match the script, it’s up to you.

After MMS, mid-may, I’ll be uploading the entire Upgrade Task Sequence Group, 19 Task Sequences in all.

To implement, grab SMSAgent’s download which includes all of the required pieces. So if you haven’t read his blog yet do it NOW, then download his version, and replace one file with this:

Script: Create-FullScreenBackground.ps1




10 thoughts on “Windows Splash Screen for the Task Sequence Progress”

    • Yes, as long as you've added PowerShell & .Net to your WinPE image. Pretty sure I did test it in WinPE and it worked, but I'd have to test again to confirm.

  1. Hi Garry,

    Did you figure out how to display the users name instead of Team Member ?

    I can see that SMSagent is calling the script with "Invoke-PSScriptAsUser.ps1", I tried that and then calling "Show-OSUpgradeBackground-Variable.ps1" from the above script.. but it wont get any further than Hey 'Name', after that it just quits - have you tried to get that part working ?

    The good part is that the Name get displayed properly queried from AD, but it just breaks after that.

    • Yes, I just don't individualize it. But it wouldn't be hard to do. I already have a script in the process that finds the logged on Console USERNAME (not friendly name) and writes that to Registry, you could simply modify that script to create a TS Var, or have the Splash Screen grab the info from the Registry. Script: OSUninstall-GetUserName.ps1

      • Yes I did already noticed the username in registry, but i wanted the friendly name displayed.
        I got it working by queering AD with ADSI.

  2. I'm running into an issue where all I see is a gray splash once the PS script is called up using Service-UI. Any ideas?

Leave a Comment

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