-
Notifications
You must be signed in to change notification settings - Fork 4
/
OSDOOBEUI.config
242 lines (213 loc) · 16.6 KB
/
OSDOOBEUI.config
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
<?xml version="1.0"?>
<OOBEMenu_Configs>
<!--Menu Details. Contains: Title,Version and Date-->
<Menu_Details>
<Detail_Title>Contoso</Detail_Title>
<Detail_Version>2.1.2</Detail_Version>
<Detail_Date>03/10/2021</Detail_Date>
</Menu_Details>
<!--Menu Options: Sets option such displaying logo file and verbose/debug output.
All settings are configurable within the OOBEUIWPF.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, some exmaple commands are displayed to trigger validation tests
- BackgroundColor [string]; Changes the main background color of the UI
NOTE: Buttons are not changeable. Recommend keeping background a blue tone
-->
<Menu_Options>
<Option_Logo1Position>Left</Option_Logo1Position>
<Option_Logo1File>msftlogo.png</Option_Logo1File>
<Option_Logo2Position></Option_Logo2Position>
<Option_Logo2File></Option_Logo2File>
<Option_FormVariable>OOBEUIWPF</Option_FormVariable>
<Option_VerboseMode>True</Option_VerboseMode>
<Option_DebugMode>False</Option_DebugMode>
<Option_TestMode>False</Option_TestMode>
<Option_HostOutput>False</Option_HostOutput>
<Option_BackgroundColor></Option_BackgroundColor>
</Menu_Options>
<!--Menu Controls [True/false]: Enables menu features.
- [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: <assettag>_<serialnumber>_<computername>.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
-->
<UI_Controls>
<Control_OverWriteUIControlByTS>True</Control_OverWriteUIControlByTS>
<Control_ShowSplashScreen>True</Control_ShowSplashScreen>
<Control_ShowSiteCode>False</Control_ShowSiteCode>
<Control_ShowSiteListSelection>True</Control_ShowSiteListSelection>
<Control_ShowDomainOUListSelection>True</Control_ShowDomainOUListSelection>
<Control_EnableNetworkDetection>False</Control_EnableNetworkDetection>
<Control_GenerateNameMethod></Control_GenerateNameMethod>
<Control_GenerateNameSource></Control_GenerateNameSource>
<Control_ValidateNameRules>True</Control_ValidateNameRules>
<Control_AllowCustomDomain>True</Control_AllowCustomDomain>
<Control_AllowWorkgroupJoin>True</Control_AllowWorkgroupJoin>
<Control_AllowSiteSelection>True</Control_AllowSiteSelection>
<Control_FilterAccountDomainType>Auth</Control_FilterAccountDomainType>
<Control_FilterDomainProperty>ClassID</Control_FilterDomainProperty>
<Control_ShowClassificationProperty>Level</Control_ShowClassificationProperty>
<Control_AllowRuleBypassModeKey>ShiftKey</Control_AllowRuleBypassModeKey>
<Control_HideDomainList>False</Control_HideDomainList>
<Control_HideDomainCreds>False</Control_HideDomainCreds>
</UI_Controls>
<!--Menu Pages [True/false]: Enables menu pages/wizards.
- 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)
-->
<UI_Pages>
<Page_SinglePageOnly>True</Page_SinglePageOnly>
<Page_ShowAppSelection>False</Page_ShowAppSelection>
</UI_Pages>
<!--Name generation rules: validates the current name meets the required info.
Each rule set is processed into a regex query and matched against name.
Example -> Set the example of the device name (this will display in upper right corner of the device name field)
there are two types of rulesets that can be created: Character rulesets or External Rulesets
Each ruleset is processed in order.
MinCharIdentifier -> Special property for rule sthat have multiple hashes as rules.
This property ensures the rules min digit and hashes (replaced as numeric digits) are checked
Character rulesets : required these properties: Id, Name, and Varname.
id -> this ID needs to match an text object in the UI. Used to display the name of rule found (eg. ID1 is for both lblID1 and txtID1)
Name -> this is a friendlt name to identify in the logs and error message with it does not match
Varname -> This is variable name to be set and can be used to process steps in task sequences
Character rulesets also require a list of rules to follow. Rules require these properties: Char, Name, VarValue
Char -> Is the character in the name to check for
Name -> this is the value that will be displayed in the UI if matched.
VarValue -> this is the value tied to the variable name to be process later
External Rulesets are objects within the script that can be used, but they does require certian properties.
The ruleset does require these properties: Id, Name, VarName.
id -> this ID needs to match an text object in the UI. Used to display the name of rule found
Name -> this is a friendly name to identify in the logs and error message with it does not match
Varname -> This is variable name to be set and can be used to process steps in task sequences
External Rulesets only require one rule to follow. The object requires at least 2 properties: MatchProperty, DisplayProperty
Thre are additional properties listed
Name -> this is a friendly name to identify in the logs and error message with it does not match
GetVariable -> this is the object to grab (as a variable)
MatchProperty -> This is the filter name to use when querying the object
DisplayProperty -> This is the object property to display if the filter is found
SetVariable -> This is the variable the value that will be set to (must match ruleset Varname)
-->
<Name_Generation_Rules Example="ADPROPAW123456">
<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>
<rulesets Id="Id2" Name="Form Factor" VarName="IDFormFactor" MustExist="True" >
<rule Char="D" Name="Desktop" VarValue="Desktop" />
<rule Char="H" Name="Virtual Desktop (VDI)" VarValue="VDI" />
<rule Char="L" Name="Laptop" VarValue="Laptop" />
<rule Char="U" Name="Virtual Machine" VarValue="VM" />
</rulesets>
<rulesets Id="Id3" Name="Site Identifier" VarName="SiteID" MustExist="True" >
<rule Name="Local Sites" GetVariable="MenuLocaleSiteList" MatchProperty="ID" DisplayProperty="BaseLocation" SetVariable="SiteID" />
</rulesets>
<rulesets Id="Id4" Name="Role Identifier" VarName="IDMachineRole" MustExist="True" >
<rule Char="PAW" Name="Privilege Access Workstation" VarValue="PAW" />
<rule Char="SSW" Name="Security Access Workstation" VarValue="SAW" />
<rule Char="JMP" Name="Jump Box Workstation" VarValue="JMP" />
</rulesets>
<!--This rule assumes hash is for interger and matches count -->
<rulesets Id="Id5" Name="Machine Class" VarName="IDMachineClass" MinCharIdentifier="5" MustExist="True" >
<rule Char="0#####" Name="Corporation" VarValue="Corp" />
<rule Char="1#####" Name="Laboratory" VarValue="Lab" />
</rulesets>
</Name_Generation_Rules>
<!-- Controls Classification banner
This list is pre selected based on Computer Machine AS Rule
-->
<Locale_Classifications>
<classification Id="Prod" Level="Confidential" Type="Confidential" Color="Green" />
<classification Id="Lab" Level="Laboratory" Type="Laboratory" Color="Yellow" />
</Locale_Classifications>
<!-- Locale Domains Details
Based on Classification and Site selected, the will pre-popluate the domain FDQN. If not found, Netbios domain name will populate
Type is to identify the domains use case.
This is currently only used to identify which domains are used to for joining and which are used for authentication
If Control_AccountDomainType specified and multple Auth domains exist on same classid, the UI will select the first
-->
<Locale_Domains>
<domain Name="LABD" FQDN="lab.contoso.com" ClassId="Lab" Type="Join" />
<domain Name="PROD" FQDN="prod.contoso.com" ClassId="Prod" Type="Join" />
<domain Name="PROD" FQDN="prod.contoso.com" ClassId="Prod" Type="Auth" />
</Locale_Domains>
<!-- Domain OU.
If enabled, this list will poplulate a dropdown based on site selected
REQUIRED: The Domain Property must match the Name property in Locale Domain
-->
<Locale_DomainOUs>
<OU Name="Lab" Domain="LABD" LDAPOU="OU='Test',OU='lab',DC='contoso',DC=com" ClassId="Lab" />
<OU Name="Production" Domain="PROD" LDAPOU="OU='Systems',OU='Prod',DC='contoso',DC=com" ClassId="Prod" />
</Locale_DomainOUs>
<!--
Site Locale: Identifies what sites to support. This will also set the domain name, timezone and sidecode for SCCM
Also used with Name rules and will identtify the site base on name.
Specifing a property to pull external list.
The first site line will be used to define the columns in spreadsheet to align with sitelist properties
Eg. <Locale_Sites ExternalList='\\192.168.1.2\Public\Sitelist.csv'>
<site ID="SiteID" BaseLocation="SiteName" TZ="TimeZone" Region="State" SiteCode="PRI" Domain="Domain" />
</Locale_Sites>
RECOMMENDED: Domain Name property should match a name in the Locale Domain Details list.
REQUIRED: DisplayFormat
Use <> to identify the format and where the properies will be diplayed.
Must use escape characters:
< -> <
> -> >
& -> &
e.g. "<id> - <Baselocation>" -> "<id> - <Baselocation>"
OPTIONAL: SiteCodeFormat. If not defined, no site code will be displayed
If ShowSiteCode is false, no site code will be displayed
If defined and ShowSiteCode is true, it will be appended to DisplayFormat
Note: Leave a delminator, such as a space, to separate from DisplayFormat values for readability
-->
<Locale_Sites DisplayFormat="<id> - <Baselocation>" SiteCodeFormat=" [<SiteCode>]" >
<site ID="LAB" BaseLocation="Laboratory Site, USA" TZ="MST" Region="US" SiteCode="LAB" Domain="LABD" />
<site ID="PRO" BaseLocation="Production Site, USA" TZ="CST" Region="US" SiteCode="PRO" Domain="PROD" />
</Locale_Sites>
<!-- Network detection:
If enabled, it will match the IP subnet with the Site code and preselect the option in the UI
REQUIRED: Site ID must match a ID from Locale Sites
-->
<Locale_NetworkDetection>
<Network SiteId="TEST" CidrAddr="192.168.1.0/24" />
</Locale_NetworkDetection>
<!--
App Selection: if the apps enabled, this list will be populated as an additonal feature in the UI
NOTE: Currently only supports 8 apps. Any more will be disgarded
-->
<Menu_AppButtons>
<item id="1" Name="Update Microsoft Office" TSvar="MSO13" DefaultEnabled="No" Desc='This will attempt to install updates for office if detected. This can prolong the deployment' />
<item id="2" Name="Install Microsoft InfoPath" TSvar="MSOIP" DefaultEnabled="Yes" Desc='InfoPath 2013 is a forms-creation and data-gathering tool that helps organizations streamline business processes' />
<item id="3" Name="Install Adobe Reader DC" TSvar="ADRDC" DefaultEnabled="No" Desc='Install Adobes PDF reader instead of using Windows built-in PDF reader' />
<item id="4" Name="Install Mozilla Firefox" TSvar="MOZF" DefaultEnabled="No" Desc='A browsers that supports specific DoD websites' />
<item id="5" Name="Install Google Chrome" TSvar="GCE" DefaultEnabled="No" Desc='A browsers that supports specific DoD websites' />
<item id="7" Name="Run GPO Script" TSvar="SCRIPT1" DefaultEnabled="No" />
<item id="8" Name="Add CMtrace" TSvar="SCRIPT2" DefaultEnabled="Yes" Desc='A tool that was created by Microsoft to view their "*.log" live and works in different environments.'/>
</Menu_AppButtons>
</OOBEMenu_Configs>