Windows Splash Screen for the Task Sequence Progress

image

image

image

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.

image
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”
image
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_”

image
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.

image
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:
image

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

 

 

POSTED ON GARYTOWN.COM

17 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?

  3. Hi Gary,

    I'm just starting to test the IPU processes, and am running into this step erroring out. Upon running the "showOSUpgradeBackground-Variable.ps1, it throws "Failed to run the Action: Deployment Screen. Unknown error (Error: FFFFFFF; source: unknown).

    Here's the full snippet from the logs:

    Command line is being logged ('OSDDoNotLogCommand' is not set to 'True') InstallSoftware 9/26/2019 4:20:33 PM 7688 (0x1E08)
    Command line "C:\WINDOWS\ccmcache\u\ServiceUI.exe" -process:TSProgressUI.exe C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -File Show-OSUpgradeBackground-Variable.ps1 returned 4294967295 InstallSoftware 9/26/2019 4:20:33 PM 7688 (0x1E08)
    ReleaseSource() for C:\WINDOWS\ccmcache\u. InstallSoftware 9/26/2019 4:20:33 PM 7688 (0x1E08)
    reference count 1 for the source C:\WINDOWS\ccmcache\u before releasing InstallSoftware 9/26/2019 4:20:33 PM 7688 (0x1E08)
    Released the resolved source C:\WINDOWS\ccmcache\u InstallSoftware 9/26/2019 4:20:33 PM 7688 (0x1E08)
    Process completed with exit code 4294967295 TSManager 9/26/2019 4:20:33 PM 3772 (0x0EBC)
    !--------------------------------------------------------------------------------------------! TSManager 9/26/2019 4:20:33 PM 3772 (0x0EBC)
    Failed to run the action: Deployment Screen.
    Unknown error (Error: FFFFFFFF; Source: Unknown) TSManager 9/26/2019 4:20:33 PM 3772 (0x0EBC)
    Not in SSL TSManager 9/26/2019 4:20:34 PM 3772 (0x0EBC)
    Set a global environment variable _SMSTSLastActionRetCode=-1 TSManager 9/26/2019 4:20:34 PM 3772 (0x0EBC)
    Set a global environment variable _SMSTSLastActionName=Deployment Screen TSManager 9/26/2019 4:20:34 PM 3772 (0x0EBC)
    Set a global environment variable _SMSTSLastActionSucceeded=false TSManager 9/26/2019 4:20:34 PM 3772 (0x0EBC)
    Clear local default environment TSManager 9/26/2019 4:20:34 PM 3772 (0x0EBC)
    Let the parent group (Launch if User Logged ON) decides whether to continue execution TSManager 9/26/2019 4:20:34 PM 3772 (0x0EBC)
    Let the parent group (OSD Module - Splash Screen) decide whether to continue execution TSManager 9/26/2019 4:20:34 PM 3772 (0x0EBC)
    Let the parent group (Launch Splash Screen) decide whether to continue execution TSManager 9/26/2019 4:20:34 PM 3772 (0x0EBC)
    The execution of the group (Launch Splash Screen) has failed and the execution has been aborted. An action failed.
    Operation aborted (Error: 80004004; Source: Windows) TSManager 9/26/2019 4:20:34 PM 3772 (0x0EBC)
    Failed to run the last action: Deployment Screen. Execution of task sequence failed.
    Unknown error (Error: FFFFFFFF; Source: Unknown) TSManager 9/26/2019 4:20:34 PM 3772 (0x0EBC)
    Not in SSL TSManager 9/26/2019 4:20:34 PM 3772 (0x0EBC)
    Task Sequence Engine failed! Code: enExecutionFail TSManager 9/26/2019 4:20:34 PM 3772 (0x0EBC)
    **************************************************************************** TSManager 9/26/2019 4:20:34 PM 3772 (0x0EBC)
    Task sequence execution failed with error code 80004005 TSManager 9/26/2019 4:20:34 PM 3772 (0x0EBC)

    Not much to go on. If after it fails out and reboots, if I launch it from a PS window from within the cache, it launches and runs fine. Any ideas on where I can start looking?

    • Nevermind. I figured it out. I originally deployed it with no user interaction (which prevented TSProgressUI.exe wasn't running, so it bombed out. I redeployed leaving the default user experience settings and it progressed like a charm.

  4. I've been implementing this for our 1809 in-place upgrade roll-out with your collection of WaaS TSs. When adding Onevinn's TSLaunch tool to the mix and using the config action to logout user before the TS begins leads to the error "Process Not Found: [TSProgressUI.exe]."

    Is there a way to have the Splash Screen launch without having an active user present at the time of TS execution? I'd really hope this can be done but if not the custom lock screens with the legal text notifications are in place. 😉

    Thanks for all your work!!

    • The Splash Screen is basically an app, and needs a user session to run in. If no one is logged on, splash screen isn't going to run. I actually thought Onevinn had something that would run on top of the lock screen, but I haven't looked into it to confirm. If you ever get your idea working for having a splash screen cover the lock screen (no one logged on), let me know.

      • I had to go the route of using Onevinn's UPGBackground which is paired with TSLaunch for this to work with no user logged on. I used their latest beta version and it's been going great! I did have to disable the Lockscreen PRE & POST steps in the upgrade TS otherwise it interrupts UPGBackground from running and takes you to the login screen. It does serve the purpose of preventing users from tampering with their computer while it's in progress.

        I did like the customization options of Splash Screen with the rolling text and where the text could be changed in a later party of the TS.

        Again thanks for your work and the many resources you've provided here!

  5. Works great in Windows but trying to get working in WinPE. The splash screen does show and it says Hey Team Member but then closes and I see the progress bar flash with the "Disable Progress UI" step before it disables it and the task sequence continues without a issue. Is this just not meant for WinPE?

Leave a Comment

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