An Out-of-the-Box Experience like user interface for Operating System Deployments
A PowerShell Driven UI that looks and feels like Windows 10 OOBE. Used in SCCM/MDT TaskSequence Bare-metal deployments
To support the UI in windows PE, these features must be installed:
- DISM Cmdlets
- Microsoft Data Access Component (MDAC/ADO) support
- Windows PowerShell
The recommended command to run the UI is:
Work-In-Progress The UI is designed o look and feel like Windows 10 OOBE startup wizard but with more control
"%DEPLOYROOT%\tools\%architecture%\ServiceUI.exe" -process:TSProgressUI.exe "%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy Bypass -Sta -File "%SCRIPTROOT%\Custom\OSDOOBEUI\OSDOOBEUI.ps1"The UI is designed to be a single page with the option to add an additional app page if needed. The UI will look like this:

"%DEPLOYROOT%\tools\%architecture%\ServiceUI.exe" -process:TSProgressUI.exe "%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy Bypass -Sta -File "%SCRIPTROOT%\Custom\OSDOOBEUI\OSDOOBEUI_SinglePage.ps1" -ConfigPath OOBEUIWPF.config- Splash screen: can be enabled or disabled by the config file. The splash screen is useful when hiding the PowerShell window screen while the UI is loading and task sequence progress bar
All settings are configurable within the OSDOOBEUI.config file
- Logo1Position [string]; Changes the position of the logo in menu. Options: Left, Right, Both, Hidden; default is Left.
- Logo2Position [string]; Changes the position of the logo in menu. Options: Left, Right, Both, Hidden; default is right
- Logo1File [string]; Location where log file exists. (Recommend size is 100x100)
- Logo2File [string]; Location where log file exists. (Recommend size is 100x100)
- FormVariable [string]; Set the variable used for the Object sin XAML. No need to change
- VerboseMode [Boolean]; Output verbose messages to PowerShell window
- DebugMode [Boolean]; Output additional messages to PowerShell window
- Test mode [Boolean]; Does not show the menu, just runs all functions and menu items After menu is played/started, run these commands in PowerShell to trigger validation tests:
$OSDOOBEUI_txtComputerName.text = 'ADPROD12345PAW'
$ComputerNameObject = $OSDOOBEUI_txtComputerName
Validate-ComputerNameRules $ComputerNameObject- BackgroundColor [string];Changes the main background color of the UI NOTE: Buttons are not changeable. Recommend keeping background a blue tone
- [Still Testing] SinglePageOnly [Boolean]; Display the UI as a single page. App page can be enabled if set to true
- ShowAppSelection [Boolean]; Display the App page (used for both single and multi page UI's)

-
[Still Testing] AutoGenerateName [string]; Auto generates name based option selected [AD, SQL or Locale, disabled]. Using a SQL table and AD, name will be autogenerated and validated, Locale uses local config from network locale
-
[Still Testing] GenerateNameMethod [string]; Auto generates name based option selected _[AD, SQL,ODJFile,ODJBlob,Locale,TSEnv,Clear].
-
[Still Testing] GenerateNameSource [string]; Used only with ODJ set in GenerateNameMethod Property; specifies location to pull ODJ file. Path can be a local, network share, or a URL (Will use invoke method). ODJ file path will search for odj files that follow the naming format. Must be named: .odj. Using a SQL table and AD, name will be autogenerated and validated, Locale uses local config from network locale NOTE: ODJ set custom properties: ODJ_FilePath,ODJ_BlobData
-
OverWriteUIControlByTS [Boolean]; Determines if tasksequence controls the UI vs Config (only changes UI_Control section) TS variables needs to mirror control but with UI prefix added (eg. <Control_ShowSplashScreen>True</Control_ShowSplashScreen> -> UIControl_ShowSplashScreen=True)
-
ShowSplashScreen [Boolean]; Display splash screen prior to menu loaded. Hides verbose command window
-
ShowSiteCode [Boolean]; Displays site code. Site code can be changed is displayed
-
ShowSiteListSelection [Boolean]; Dropdown of all sites with site ID and site Code(if exists)
-
EnableNetworkDetection [Boolean]; Select site locales based on current IP
-
ValidateNameRules [Boolean]; Uses Generation Rule Sets to ensure name is valid. Does not check if name is available on domain
-
ShowClassificationProperty [string]; Displays classification property in Identity field with appropriate color based on device name (Values to choose from: Id,Level,Type,None)
-
ShowDomainOUListSelection [Boolean]; Dropdown to select the OU to join to. Can be controlled by site locale
-
AllowCustomDomain [Boolean]; If enabled the domain field is a fillable textbox, if disabled the domain field is a dropdown (populated by Locale Domain Info)
-
AllowWorkgroupJoin [Boolean]; If set to false, the workgroup option is filtered out.
-
AllowSiteSelection [Boolean]; Enables the ability to change the Site ID from selection list (Must have ShowSiteListSelection enabled)
-
FilterAccountDomainType [string]; Set this value to match a Locale Domain Type property. If set, the matching domain by classification will be filled in for the account domain
-
FilterDomainProperty [string]; Value is used when matching domain property to classification id property. Currently supports only classification id filter.
-
AllowRuleBypassModeKey [string]; If set, the validation rules can be bypassed by pressing shift before clicking validate. This allows custom names. Other validations are still checked
-
HideDomainList [Boolean]; If this is set to true, the domains fields will be hidden and no validation or variables will be set; overwrites ShowDomainOUListSelection
-
HideDomainCreds [Boolean]; If this is set to true, the credential fields will be hidden and no validation or variables will be set -->
AllowRuleBypassModeKey screenshot

This is highly configurable and can have up to 5 areas. Please read the config file for more details
The varname can be renamed. however keep the ID the same
- IDMachineType [table]; Value is controlled based computer name field (eg.;ADPROP12345PAW").
example:
<rulesets Id="Id1" Name="Machine Type" VarName="IDMachineType" MustExist="True" >
<rule Char="A" Name="Administrative" VarValue="Admin" />
<rule Char="D" Name="Developer" VarValue="Developer" />
<rule Char="R" Name="Training" VarValue="Training" />
</rulesets>- IDFormFactor [table]; Value is controlled based computer name field (eg. ADPROP12345PAW").
example:
<rulesets Id="Id2" Name="Form Factor" VarName="IDFormFactor" MustExist="True" >
<