shishir kushawaha
Imaged/Autopilot Provisioned Device Validation with PowerShell WPF GUI
Updated: Apr 23
During the Windows OS deployment or Autopilot device provisioning process, it is common to encounter scenarios where applications, updates, or drivers may be missing. Furthermore, verifying if Bit locker is enabled or checking any specific setting can also be a tedious manual task. Manually performing these verification tasks can be time-consuming, error-prone, and may even require specialized knowledge.
To address this challenge, a custom PowerShell GUI script is developed to streamline the device validation process. The script automates the validation of critical aspects such as applications, settings, custom commands, Bit locker encryption status etc. By running the script, it gathers the necessary system information and performs the necessary checks to validate the device.
The script is designed to have a user-friendly GUI which is easy to use and process. It also generates .HTML format report that can be reviewed and acted upon accordingly. By automating this process, IT teams can save time and resources, reduce errors, and ensure that all devices are properly validated before they are handed over to end-users.

This GUI tool can be downloaded from Github.
Once downloaded, the tool needs to be extracted to an appropriate folder. The folder structure of the tool consists of the _xml folder, which contains two XML files. _logo folder for company logo in .png format. The logo name must be banner.png. _report folder is a blank folder where reports will be published.
Let's go through the different XML tags used in the given structure:
<?xml version="1.0" encoding="UTF-8" ?>: This tag declares the XML version and encoding being used.
<Check>: This is the root element of the XML file and contains all the other elements within it.
<Applications>: This element contains a list of <App> elements, which are used to validate the presence of specific applications. The name of each application is enclosed within the <App> tag. For example, if you want to validate if the 'anydesk' app is installed, add the name in between the <App> tags like <App>anydesk</App>.
<Settings>: This element contains multiple sections to validate different system settings.
<Registry>: This element contains a list of <Reg> elements, which are used to validate the presence of specific registry keys and their values. Each <Reg> element includes a <Path> tag to specify the registry path, a <key> tag to specify the key name, and a <Val> tag to specify the expected value. For example, if you want to check if RDP is enabled in the system, you can arrange the tags in the following order:
<Reg>
<Path>HKLM:\ SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services e</Path>
<key>\fDenyTSConnections </key>
<Val>0</Val>
</Reg>
<File>: This element contains a list of <Path> tags that specify the paths of files that need to be validated.
<Folder>: This element contains a list of <Path> tags that specify the paths of folders that need to be validated.
<Custom>: This element is used to validate custom system settings by running specific commands and validating their output.
<Set>: This is a child element of <custom> is used to define a specific command to be executed and its expected output. Each <Set> element includes a <name> tag to specify the name of the command, a <Command> tag to specify the command itself, and an <Output> tag to specify the expected output. For example, if you want to check whether 'Windows search' service running or not, you can define the XML as below:
<Set>
<name>Windows search service</name>
<Command>(get-service -Name 'Windows search').status </Command>
<Output>Running</Output>
</Set>
If this service is not running, it will display the message "Output is not matching". This way, you can add multiple commands and their expected values.
After updating the checklistXML.xml file, users can run the tool by executing the batch file 'WindowsDeploymentValidationTool.bat', which will launch the tool with administrative privilege.
The GUI tool is divided into several sections.
System: The first section, called 'System,' displays detailed information about the system where the tool is being run. This includes the OS version, make and model, computer name, and serial number.
XML Validation: The second section, 'XML Validation,' is the most important section of the tool, which performs validation based on the input XML file. The validation process includes checking for mandatory applications, updates, drivers, and Bit locker encryption status. Users can perform different validations using the buttons provided in this section. The tool also has an option to generate a complete report of the validation results.
Information: The third section, 'Information,' is an add-on section that provides additional information about applications, updates, regional settings, and other important system details.
The tool also includes a section for displaying the logo, disk utilization, message area, tabular section to display result and current time.
This graphical tool provides an easy and efficient way to validate the device post Windows OS deployment or Autopilot provisioning. It offers a range of checks to ensure that applications, updates, drivers, and other settings are properly installed and configured. Instead of running commands manually, you can simply press the respective buttons to get the output. In addition, the tool features graphical visuals to provide detailed information about the system, making it easier to identify and resolve any issues.