Understanding the MDT Lite Touch Driver Repository

Earlier this week I was asked to help out with an MDT Lite Touch Driver Repository that was missing most of its drivers. After some research it turned out that the drivers.xml had been truncated, something that can happen if multiple admin are working with drivers at the same time (MDT uses a last-writer-wins approach). Here is how you can troubleshoot that:

Importing Drivers to MDT Lite Touch

When importing drivers to MDT Lite Touch, there are two XML files being updated. The DriverGroups.xml file which contains a list of your virtual folder structure inside Out-of-Box Drivers, together with the GUID of each driver that is linked to each folder, and the Drivers.xml file which contains details about each driver.

Here is an example of a DriverGroups.xml file with a single folder (Windows 10 x64 22H2\HP ZBook Firefly 14 G7 Mobile Workstation) having a few drivers in it.

<group guid="{dc62b51a-5e1d-4c17-a2dd-a1ec41a4d3e4}" enable="True">
    <Name>Windows 10 x64 22H2\HP ZBook Firefly 14 G7 Mobile Workstation</Name>
    <Comments></Comments>
    <CreatedTime>2/26/2023 6:14:54 AM</CreatedTime>
    <CreatedBy>ROGUE-512\Administrator</CreatedBy>
    <LastModifiedTime>2/26/2023 6:19:07 AM</LastModifiedTime>
    <LastModifiedBy>ROGUE-512\Administrator</LastModifiedBy>
    <Member>{b078d747-b5db-4001-a635-9bd80873894d}</Member>
    <Member>{749ff0d6-dca2-4a6b-a94e-370905fdfd40}</Member>
    <Member>{29bc1c4f-b185-4f69-bdad-fc5b8df29914}</Member>
    <Member>{d57a0415-f9b3-47b9-871a-5b99d8f134d5}</Member>
    <Member>{764b0654-edb8-4da0-927c-b669e1a6eccc}</Member>
    <Member>{b2fe3a04-22bc-46db-b897-b3d2f368e7c9}</Member>
    <Member>{e5c35597-e318-4c67-b54d-4169e1c6bb6d}</Member>
    <Member>{652ce022-bee1-4d31-86e0-f6b9a5641c57}</Member>
    <Member>{21cfea77-f7b5-4316-af40-fdc98c8db296}</Member>
    <Member>{041e0755-1e23-45f9-b3fd-f5db0c6c2e13}</Member>
    <Member>{25033f5b-0a37-4816-beb3-5b9066c58095}</Member>
</group>
Drivers listed in the DriverGroups.xml file

If we take a look at the corresponding Drivers.xml file, you find the following info for one of the drivers. Please note the 749ff0d6-dca2-4a6b-a94e-370905fdfd40 guid that is also showing in the DriverGroups.xml file.

<driver guid="{749ff0d6-dca2-4a6b-a94e-370905fdfd40}" enable="True">
    <Name>Intel Corporation Extension HdBusExt.inf 27.20.100.8853</Name>
    <CreatedTime>2/26/2023 6:16:45 AM</CreatedTime>
    <CreatedBy>ROGUE-512\Administrator</CreatedBy>
    <LastModifiedTime>2/26/2023 6:16:45 AM</LastModifiedTime>
    <LastModifiedBy>ROGUE-512\Administrator</LastModifiedBy>
    <Manufacturer>Intel Corporation</Manufacturer>
    <Version>27.20.100.8853</Version>
    <Date>10/14/2020</Date>
    <Source>.\Out-of-box Drivers\SoftwareComponent\cui_dch_27.20.100.8853_3246FC52CEAE4B6C3A2F7F64ABC3DFBBB8B495ABE4415326C6769AFAF26592D3\HdBusExt.inf</Source>
    <Class>Extension</Class>
    <Hash>3246FC52CEAE4B6C3A2F7F64ABC3DFBBB8B495ABE4415326C6769AFAF26592D3</Hash>
    <WHQLSigned>True</WHQLSigned>
    <Platform>x64</Platform>
    <OSVersion>10.0...17704</OSVersion>
    <OSVersion>10.0...18362</OSVersion>
    <PNPId>PCI\VEN_8086&DEV_9D71</PNPId>
    <PNPId>PCI\VEN_8086&DEV_A171</PNPId>
    <PNPId>PCI\VEN_8086&DEV_A2F0</PNPId>
    <PNPId>PCI\VEN_8086&DEV_9DC8</PNPId>
    <PNPId>PCI\VEN_8086&DEV_A348</PNPId>
    <PNPId>PCI\VEN_8086&DEV_A0C8</PNPId>
    <PNPId>PCI\VEN_8086&DEV_43C8</PNPId>
    <PNPId>PCI\VEN_8086&DEV_98C8</PNPId>
</driver>
Details for one of the drivers in Drivers.xml

Using PowerShell to Troubleshoot

If you want to make sure the DriverGroups.xml file is matching the Drivers.xml file, you can use some basic XML parsing in PowerShell. Here are some examplesÖ

# Using PowerShell to Parse XML Attributes with Select-Xml
$Drivers = "C:\DeploymentShare\Control\Drivers.xml"
Select-Xml -Path $Drivers -XPath '/drivers/driver' | ForEach-Object { $_.Node.guid }
(Select-Xml -Path $Drivers -XPath '/drivers/driver' | ForEach-Object { $_.Node.guid }).count

# Using PowerShell to Parse XML Attributes with Select-Xml
$DriverGroups = "C:\DeploymentShare\Control\DriverGroups.xml"
Select-Xml -Path $DriverGroups -XPath '/groups/group/Member' | ForEach-Object { $_.Node.InnerXML }
(Select-Xml -Path $DriverGroups -XPath '/groups/group/Member' | ForEach-Object { $_.Node.InnerXML }).count

Restoring from Backup

If the XML files for drivers gets in a mismatch, simply restore the from your backup. In the very event you don't have a daily backup of your deployment share (which you should have), please note that you may be lucky and find a working copy of your drivers*xml files in the <DeploymentShare>\Backup\Automatic folder.

Example of the <DeploymentShare>\Backup\Automatic folder
About the author

Johan Arwidmark

5 1 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments

>