Driver Management (Part 2) – MDT 2008

I am often asked what the best way is to manage drivers with both BDD/MDT and ConfigMgr. With this in mind I thought I would create two blog posts dealing with this topic. The first post covered ConfigMgr and the second (this post) BDD/MDT driver management.

Please note this is not the only way to manage drivers, there are many different ways to manage drivers. However this is an approach that I have used many times with much success.


Before I get into the details I would like to provide a quick overview of driver management.

The first thing we must understand is the type of drivers that you need to manage. I place drivers into two categories:

1. NICE Drivers – Drivers that install using an INF file.

2. BAD Drivers – Drivers that must be "installed" – This could be a Bluetooth driver, finger print reader software or even DVD software that is specific to a particular model type. I also refer to these drivers as "Hardware based applications".

Next we need to understand where drivers are used during the deployment process. There are two areas where they are used:

1. Host OS – These are drivers that are installed on the Host OS.

2. Boot images – These are drivers that are required by the MDT Windows PE boot images to enable OS deployment. The key driver types required are network and mass storage drivers.

Finally we need to understand the options MDT 2008 provides for installing drivers:

1. Out-of-Box Drivers – Drivers are imported into the Deployment Workbench. During OS deployment MDT performs a PnP scan of the computer and chooses which drivers to install from all available drivers.  You can filter drivers using groups. These tell MDT to only consider certain drivers when deploying an OS.

2. DRIVERPATHS – This is an option that is specified in the MDT deployment point rules. It specifies a path to a folder containing all of the drivers you would like to deploy to the computer. During OS deployment all files within that path are copied to the computer. No PnP scan is performed on the drivers contained in the folder.

So now that I have covered the basics lets discuss how I manage drivers.


I do not use out-of-box drivers to install "NICE" drivers on clients, I use the DRIVERPATHS method. I like the way that driver groups work but there is one scenario that driver groups does not cover. Devices that aren’t found by a PnP scan such as USB devices, multi level drivers and devices not enabled during deployment (like Bluetooth) will not be installed using the Out-of-Box installation method. You could use a combination of these methods to deploy drivers but I prefer to use one method that covers all drivers.

However I do use Out-of-Box drivers (with driver groups) to manage two key areas:

1. Drivers that must be added to Windows PE boot images (Network and Mass storage drivers) – MDT will dynamically inject these drivers into your Windows PE boot images.

2. Mass storage drivers that will be injected during image creation – MDT will dynamically inject mass storage drivers into client during image creation.

I create an application for each of the "BAD" drivers. These applications are then assigned with the correct hardware type using MDT database or deployment point rules. This allows me to selectively install the applications based on hardware type.

So now that you know how I manage drivers lets look at how I configure MDT to support this process.

Supporting infrastructure

The following steps must be followed to prepare the MDT infrastructure for driver management:

1. Create and a share folder on the deployment server. This folder will contain the drivers for each hardware type. I usually create a folder called models and share it as models$.

2. Create a driver group for mass storage drivers – I call this group "MassStorageDrivers"

3. Update the deployment point rules to assign the driver group to the StorageDriverSysPrepGroup property



    Note – All mass storage drivers in this group will be injected into the computer before running sysprep, so the drivers can be picked up after reboot. This can only be used when creating an image.

4. Create a driver group for Windows PE images – I call this group "WinPE"

5. Assign the Window PE driver group in the Windows PE tab of the Deployment Point.


    Note – This ensures that only drivers in this group are injected into the Windows PE boot image. This option is not available in LAB distribution points. It is important to note that LAB deployment points should only be used for creating images not deploying images.

5. Create a driver group that contains no drivers – I call this group "NoDrivers"

6. Ensure that the "NoDrivers" driver group is the only one selected in the driver groups tab of the Deployment Point.


    Note – This will ensure that only drivers that are specified using the DRIVERPATHS property are installed.

6. Update the deployment point rules to specify the DRIVERPATHS property



   Note – %Model% will be replaced by the WMI value gather during the MDT deployment process. All drivers for each hardware type will be stored in a folder corresponding to this value.

Now that we have prepared MDT for driver management lets look at how these settings are used.


I find the simplest way to describe how I manage drivers is by example. The example I will use I perhaps the most common scenario in OS deployment, adding support for a new hardware model.

The process involves the following steps:

1. Create a folder for the new hardware type in the models folder. The models folder name must match the model value returned by WMI. I have found the simplest way to determine this value this is via a WMIC query.

    The following steps detail how to perform a WMI, ensure that these steps are run on the new hardware NOT the server:

           a. Open a Command Prompt

           b. Type WMIC

           c. To determine the Model, type CSProduct Get Name

2. Gather together all of the required "GOOD" drivers for this hardware type and place them in the new folder. I usually create a sub folder for each driver type. For example "Model\NIC" or "Model\Audio"

3. Create an MDT application for each "BAD" driver that must be installed

4. Associate the applications with the model using the MDT database or rules

5. If Required – Import mass storage drivers into the deployment workbench. Add these drivers to the "MassStorageDrivers" group during the import process.

6. If Required – Import network/mass storage drivers required for Windows PE. Add these drivers to the "WinPE" group during the import process.

    Note – The version of Windows PE used by MDT is based on Windows Vista. This means that you must to import Vista drivers to support Windows PE.

7. Update the deployment point.

    Note – If you have multiple deployment points then ensure that they are all updated.

8. Update any Windows PE boot images on WDS servers or DVD/CD media


Mass Storage drivers can be particularly troublesome to manage when deploying Windows XP and Windows 2003. The most recent release of MDT (March 2008) now includes support for injecting mass storage drivers  before running sysprep, so the drivers can be picked up after reboot. This is a great new feature of MDT but it can only be used when creating an image. MDT CAN NOT inject drivers into an image that has already been syspreped.

So what does this really mean? If you have a new hardware type that requires a mass storage driver not currently supported by your image then you will need to recreate your image :(.

Note – ConfigMgr can inject drivers into an existing image.

Note – MDT will inject Vista and Windows 2008 mass storage drivers


So that’s how I manage drivers …. simple 🙂


This post was contributed by Ben Hunter a Consultant with Microsoft Services New Zealand.

Comments (92)

  1. Ben Hunter says:

    Hi Benno,

    The best way of getting around the problem of all the different model types is to use model aliases. I have a previous blog post that details how to do this:

    I do not know why the functionality to assign a driver group to a task sequence was removed from the interface.

    However you can assign this either dynamically or statically using the customsettings.ini file. Here is an example of doing it statically:





             DriverGroup= HP Compaq dc7100


             DriverGroup=HP Compaq DC7600

    I would not recomand doing this statically. Instead I would use one task sequence that dynamically assigns the driver group. This will reduce the management overhead.



  2. Ben Hunter says:

    Hi Tobias,

    Are you adding injecting the driver when you create the image?

    Did you add the driver to the group specified by StorageDriverSysPrepGroup?



  3. doxley says:


    Have you checked the log files to find out why it is failing?  You’ll probably find the reason there.

    Look for the bdd.log (amongst others) in the MININT directory.



  4. Ben Hunter says:

    Hi Rich,

    It should be copying the drivers to C:drivers.

    I have found that most drivers include a readme that explains how to extract them. Generally they cannot be extracted by Winzip.

    Daniel was refering to  installs that include a silent switch. You should never need to repackage.



  5. Ben Hunter says:

    Hi Aviad,

    This not work for a media point using the current configuration. However it can easily be adjusted to work for a media deployment point.

    What you should do is create an application that contains the drivers for each model. Then simply include this application in the media deployment point. You will need to change the DRIVERPATHS value:


    Hopefully that helps.



  6. Anonymous says:

    Hi Ben,

    I did check to ensure I have an IP address which I do.  I’ve deleted the MININT and _SMSTaskSequence folders, I’ve even booted with a WinPE usb and did a format of the drive to be sure.

    The issue I’m having is trying to deploy a WIM of Windows XP.  I’ve done some testing with doing a remote install of Vista from Source Files and that goes through fine.

    I’m thinking I may have my syntax wrong with editing the Rules for my Deployment Point.  I’ve tried several configurations but this is the last one that I tested with.

















    I’ve tried adding the "StorageDriverSysPrepGroup=MassStorageDrivers" and "DRIVERPATHS1=\cg-ny-vds-01Models$%Model%" entries under the same "[Default]" as the OSInstall=y with no luck as well.  Before following this tutorial I was able to deploy images over and over with XP but somewhere I’ve gone awry with this tutorial.

  7. Anonymous says:

    Hi Ben,

    In my OSD properties, I don’t have the Applications or Driver Groups tabs. How would I bring those in?



  8. Anonymous says:

    Hi Ben,

    Thanks for the info. From there on, how are these tasks performed?

    thanks again,


  9. Ben Hunter says:

    Hi Chris,

    The reason you do not see the other settings is because I always deploy my images using a network deployment point. I do not use the lab deployment point to deploy images. The lab DP is intended for creation of images only.

    So try creating a new network DP and see how you go.



  10. Ben Hunter says:

    Hi Md,

    I would suggest that you have the correct driver added to WinPE but for some reason it is not added to the Host OS. What OS are you deploying?


  11. Anonymous says:

    Thanks for the suggestions.  I’ve come to find out it’s only when I’m working with a WIM file that has been sysprepped.  Can’t seem to figure out why.  So now that I’m able to deploy my XP WIM again, I’ve started from scratch and redid all of the steps in this tutorial and adjusted my Rules as so:





    I’m out of time for the day to continue working on this but will be back at it tomorrow.  I’m wondering if I need to have those entries before the OSInstall=Y.  I’m able to get my image out but still I am not getting any driver support.  I made sure to create the models$ share and named the folder from my WMI query.  

  12. Ben Hunter says:

    Hi Mwest,

    It sounds like it is time to dive into the logs :).



  13. Anonymous says:

    I am often asked what the best way is to manage drivers with both BDD/MDT and ConfigMgr. With this in

  14. Ben Hunter says:

    Hi Greg,

    What you are doing sounds correct. I would suggest that you look at the ztigather.log file to troubleshoot this issue.

    It should show what the driverpaths1 value is set too.

    For more information on troubleshooting MDT have a look at the troubleshooting post on my old blog –



  15. Ben Hunter says:

    Hi jparekh73,

    I don’t have too much experience with VMware workstation.

    You will need to integrate the mass storage drivers for VMware into yuor boot image and the OS install process.

    I would suggest that you post the question on myitforum.



  16. Ben Hunter says:

    Hi Rich,

    You do not need to add applications to the task sequence. It will dynamically install the applications using the "Install applications" task in the state restore phase.



  17. Ben Hunter says:

    Hi Kelly,

    This does not apply to OSD deployment points. You would need to create a RESOURCEROOT to perform these tasks. To do this create a network deployment point and then refer to this DP in your customsettings.ini file using the RESOURCEROOT variable.



  18. Ben Hunter says:

    Hi Darren,

    I like to use model aliases to do this. What I do is truncate the model type after the first four characters.

    See the following blog post for more information on model aliases:



  19. Ben Hunter says:

    Hi Md,

    I would suggest that you have the correct driver added to WinPE but for some reason it is not added to the Host OS. What OS are you deploying?


  20. Ben Hunter says:

    Hi Jared,

    Do you have the the following to your sysprep.inf file for creating the master image?



    Here is some more info on what it does:

    I have seen people installing the application to "work around" this issue. I am not sure if they had the same problem you had.



  21. doxley says:


    Hi Rich,

    When I have come across this problem often the only way is to try and ‘break open’ the installer package in order to get the msi file or the driver files.

    Try launching the installer program whilst keeping an eye on your %temp% folder to see what contents are extracted to it.  You may see the files you need are copied there, and then you can grab them to try doing a silent install.

    It doesn’t always work, but I have had some success with it.



  22. Ben Hunter says:

    Hi Jared,

    What type of machine did you use to create the master image? Also which OS are you deploying?



  23. Ben Hunter says:

    Hi Shane,

    I haven’t come across this issue yet. However I would suggest that you would need to write a userexit script that creates a model alias for the IBM models.

    This would need to include specific exceptions for this model.

    The following blog post details how to use model aliases, you just need to adjust it for IBM models –



  24. Ben Hunter says:

    Hi Isael,

    I have seen this issue many times. Can you try adding the following line to the sysprep file you use to create your image.



    Here is some more info on what it does:



  25. Ben Hunter says:

    Hi Jared,

    The drivers get copied to the C:drivers folder which is hidden. They also get injected into the driver store.



  26. Anonymous says:

    Dear Ben,

    Thank you so much for this post — It’s brilliant!

    I’ve got it working but I’m having a problem with some computers that don’t report the Model name correctly.  WMIC is returning blank model names for these computers.  

    I’m looking for a way to "override" the model name based on a machine’s MAC address (these machines also don’t report UUID properly!).

    I’ve thought of two solutions:

    1) Use the MDT database ServerA spare field as an environment variable and specify


    2) Using the MDT database and manually storing a model name for each of these dumb computers in the ServerA spare field.  Then modifying the ZTIGather.wsf script to populate the model variable when it is not returned from WMI.

    Is there a better way to accomplish this?  

    I know script modifications are not supported, but I’m stuck with these computers and can’t replace them.

    Also is there some script I can use to pre-populate the MDT database (e.g. run as a login script) to capture the information in the Identify Tab?

    I’m leaning towards option 2, as I don’t want to have to populate the Model for all computers in the database, and I fear that if I specify an additonal DriverPathsNNN variable for %Model% it would copy the entire driver library (all models) down to the machine.

    Again, thank you


  27. Anonymous says:

    Hey guys,

    I know Ben is out for the next few days but I’ve stumbled upon something in my testing.  I’ve been having an issue with getting my image to deploy and install the devices using this tutorial.  I’ve come to find that the drivers are being copied over during the deployment process with my Win XP WIM, they are in c:drivers but the folder is hidden.  Now knowing that they are actually there stumps me more as to why they are not installing themselves.  The possible thought I have is that the image is not sysprepped.  The reason for this being that I can’t seem to deploy a sysprepped image for some reason.  I’m going to test capturing an image with MDT rather than using one I captured manually with ImageX.

  28. Ben Hunter says:

    Hi Rich,

    The best way is to use the database rules.

    This is detailed in the "deployment customisation guide" in the chapter "Configuring the Database" section.



  29. Ben Hunter says:

    Hi Rich,

    The non-silent installs will still work. However I think you shouldn’t need to use non-silent installs for driver installation. I have always managed to find ways to install the BAD drivers silently. I think it is a very bad idea to be interacting with the deployment process as introduces a greatly increased management overhead and likehood of error.



  30. Ben Hunter says:

    Hi Mwest,

    There are two things you need too do.

    1. CAn you open the command box in the bottom left hand corner and run ipconfig. Does this return an IP address? If it doesn’t then you will need to find the correct Vista drivers for the 610. I think the 610 uses a broadcom B57 nic.

    2. Make sure that you delete the MININT and _SMSTaskSequence folders between tests. If these exists then "WEIRD" things will happen :).



  31. Ben Hunter says:

    Hi Olivier,

    The best way to do this may be by adding a script to your task sequence that adjusts the driverpaths value that you have specified in the database.

    For example for an HP – 8510W you could specify the following driver path in the database – "HP – 8510W". You would then detect the type of OS that has been deployed and adjust the driver group accordingly. So if you detect the OS as Vista then simply update the value in the database, for example "HP – 8510W – Vista".

    This task would need to be run before the apply drivers task.



  32. Ben Hunter says:

    Hi Kevin,

    The main issue with with using out-of-box drivers is that you have multiple drivers then you might not get the correct driver installed. MDT copies all drivers with PnP ID’s that match the PnP ID on your computer. It then lets the OS decide which is the best driver to use.

    A BAD driver by my definition is just any driver that cannot be installed using an INF file. For example drivers that be "installed" using setup.exe.



  33. Anonymous says:

    Ben – I’m using VPC (and tried VMWare Wksn 6) as well to boot of the LiteTouch.iso to connect to the MDT 2008.  PE starts fine and sees the network (had to add the AMD driver for VMWare) but both VPC and VM cannot see te C: drive.  Any ideas?  VM is set for IDE and VPC is set as is.  The virtual drives are preset to 8gb.

  34. doxley says:

    @ Andrea,

    Andrea, that device that is not installing is the infamous "Microsoft UAA Bus Driver for High Definition Audio".  You need to install a KB hotfix in order for Windows to recognise it.  You’ll find it on the download page for the drivers of the computer.

    IIRC, this is the KB number, but go get it from the manufacturer:

    Also, you said "I supposeone way around this is to build the wim with MDT but what should I change".  I would always recommend using MDT to build the WIM, it is a great tool that will save you plenty of future headaches.



  35. Anonymous says:

    Hey guys,

    I’m running into a snag with this.  I can PXE boot fine, go through the LTI setup, and it begins running the task sequence.  Once it gets to Installing Operating System, it sits for about 30 seconds and errors out with 32 errors.  The errors repeatedly cannot find the deployment server, and the final one at the bottom states that it cannot find it because there is no network device on the machine.  I’m able to authenticate when first starting the LTI setup but once it gets here it fails.  I’ve added the available NIC drivers for this computer (Dell Latitude D610) to the WinPE image but still nothing.  Let me know if you need to exact error message or if this is enough.  As always, appreciate your help guys!

  36. doxley says:


    Glad that fixed it!  Customers always laugh and look at me funny when I tell them to wait 5 minutes as it will probably solve itself.  I have never found anything offically documented about this, but I suspect that Windows Setup will continue on errors after a delay when used with an unattend.txt file.  A shame that the error window did not have a counting down clock on it or something else to tell you not to panic; I wonder how many other people have had this problem…  It might even be worthy of a blog post if I could only get screenshots!

    Glad to have been of help,


  37. doxley says:

    Hi MWest,

    This might seem a bit bizarre, but have you just waited for a few minutes without touching the machine?  A couple of times I have had an identical problem and the solution was to do nothing!  After 5 minutes Windows Setup continued and installed the correct driver from it’s cache even though it had originally popped up the driver window.

    If that is not the solution, then it seems that you don’t have the right driver added in MDT, you’ll need to check the PNP IDs against the drivers you have added to see if you have the *exact* driver.



  38. Anonymous says:

    Ok, that did it.  3.5 minutes and there it went and finished on it’s own.  Would be nice to not have that happen but at least I’m back on track.  Thanks again Daniel!

  39. Md.Waseem says:

    Hi Ben,

    I have a question regarding Driver Injuction.. I am trying to capture image with the SATA drivers. I have added all the required sata drivers to the out of box drivers. I know these sata drivers are correct because otherwise the machine would not start the deployment process in the first place. The deployment process goes smoothly according to the task sequence till Post-Install. The machine reboots & gives the blue dump. Please suggest !!”



  40. doxley says:


    Although the drivers are copied down to the C: drive, Windows will not know that they are there to be used.  That is the purpose (or one of them) for the OEMPnpDriversPath key in the sysprep.inf file.



  41. Ben Hunter says:

    Hi Rich,

    It looks like you have an IBM machine. This is how they define their model types. So yes I am suggesting that you use this folder name. I usually include a text file in the folder that identifies the smodel type with the real product name.

    You do not need to create seperate driver paths entries. This is taken tare of automagically by the %model% part of the path.


    For further information on how to assiociate applications with the model type please have a look at one of my old  blog posts:



  42. Ben Hunter says:

    Hi Zac,

    You can assiciate the applications to models using the database. Examples of this are included in the MDT documentation.

    further information is also detailed here –



  43. Anonymous says:


    I have been trying to setup MDT 2008 for deploying Win XP to a core group of different workstations. I have been researching this for the past month and testing it as well. I have successfully setup MDT 2008 and can deploy Win XP to different Dell hardware. At first I would select a different driver group for the deployment point for the hardware I was deploying to. I want this to happen automatically though. I setup the MDT database and created a Make and Model for each hardware type and specified the driver group name for the specific make and model. I tried running this while the deployment point driver group settings had nothing checked. No drivers would install. It seems to only work based on the deployment point driver group setting, not the model type it pulls from WMI. I have not found much detail on this setup.

    I also tried what you have outlined in this blog. I removed the database references and created a share on the server, put the drivers in subfolders with a parent folder of the WMI model type and added the path in the customsettings.ini for the deployment point. I then selected the no drivers group I created. Still no drivers were pushed to the workstation.

    Sorr for the long post, please help if you can.


  44. Anonymous says:

    Dear Ben,

    I need some help with the Mass Storage with XP Pro.

    In the LAB deployment section, under the Windows PE, under driver injection, I have included the Mass Storage only.

    I have added the mass storage to a new drver group i have created, called MassStorageDrivers.

    The problem. With my deployment of the wim to a target machine, it will get a BSOD.

    I need someone to explain the mass storage part to me. Maybe I have missed a few steps.


  45. Anonymous says:


    I am stuck and have been for about 2 days and i sure can use someones help.

    I am building a Lite Touch XP SP 3 Image using the BDD 2007.  I use the BDD to do a unattended build which i then sysprep.  Of course within the image contains a driver folder with all the correct drivers and bleow that a massstorage folder with the latest mass storage files from Intel.  

    The issue is when after i build the image and get it properly sysprepped.  I have no issues on any other machines exept one. It is a GX755 with the Intel Chipset (iaAHCI_ICH9R = "Intel(R) ICH9 SATA AHCIController (Desktop ICH9R)" controllor) which i have properly refrenced in the mass storage device section of my syprep foler.  The issue is when the machine boots up and before it runs the mini setup wizard it gives this error:

    Error loading operating system.

    Now if i go into the bios and swich the controller from AHCIraid to ATARAID the machine comes up fine however when you are working wtih about a 100 desktops this makes the deployment a little less the LIGHT TOUCH.  

    If there is anyone out there who has seen this or has any kind of information that can help please do.


  46. Anonymous says:

    Hey guys,

    I’ve got everything working properly but I’m running into two issues that are just bugging me.  One being that during the driver install portion of sysprep after the image is deployed, it doesn’t silently install the driver for the plug and play monitor.  I always have to choose if I want to let it check online for the driver, click next a couple times, then click finish.  Is there a way to get that one to silently install too?  It seems to be pulling it’s driver from the Windows driver cache rather than c:drivers.

    Another issue I’m having in the same vain and this may not be the right spot for it, is that when I install Office 2007 with the answer file, I still have to click "Install Now" to get it to start but the rest goes from the answer file.  Is there a way to get it to not require me to click "Install Now" and just do it on it’s own?

  47. Anonymous says:

    Hi Ben,

    This way of injecting the drivers works but I am running into a problem in my company I already have 17 different model names for one and the same laptop (e.g. HP Compaq dc7100 USDT(PN286ET)) HP changes the model name constantly but the drivers are the same.

    I liked the way from BDD by creating 1 driver group per model and select this with the build for the model. This way of injecting GOOD driver per model has been removed with MDT 2008. Why?

    Is there a task sequence available in MDT like the one for selecting the operating system only then for selecting the drivers just like in BDD.



  48. Anonymous says:

    Dear Ben,

    I need some help with the Mass Storage with XP Pro.

    In the LAB deployment section, under the Windows PE, under driver injection, I have included the Mass Storage only.

    I have added the mass storage to a new drver group i have created, called MassStorageDrivers.

    The problem. With my deployment of the wim to a target machine, it will get a BSOD.

    I need someone to explain the mass storage part to me. Maybe I have missed a few steps.


  49. Ben Hunter says:

    Hi Benno,

    I agree that driver groups work well. However I don’t use them as they don’t work in all scenarios and I prefer to use one method only (maybe I am lazy ).

    Have you thought about assigning the driver group dynamically using the customsettings.ini file? This way you only need one task sequence for all models.



  50. Anonymous says:

    Thanks for the info Daniel.  I’m now able to successfully deploy XP from a WIM image with driver support.  One little hang up I’m running into is that with the Dell Latitude D610 I’m using, is that it’s looking for a driver for the Plug and Play monitor.  I don’t even have to do anything aside from click ok and next a couple times and it finds the driver in Windows’ default driver cache, but it interrupts the flow of the whole thing to have to watch for it.  Is there a way to tell it to just find and install it like it does all of the other drivers?

  51. Anonymous says:

    Thanks for the info Daniel, I’ll give it a try.  I did try to locate the driver after it was installed.  When I looked at the driver for it, it said there was no driver installed.  I checked around with a few other workstations in my office and they all seemed to have the generic "monitor.sys" from c:windowssystem32drivers as their driver.  I’ve copied that and the entire folder to my Models$ share but with no luck.  I’ll give the wait it out option a try right now.  Oh, I did also figure out my Office silent install issue.  When I created the config.xml I assumed it would make it silent, did some edits to it and it’s all good.

  52. Anonymous says:

    Ben, as always, you rock!  I’m going to give this a shot right now.

  53. Ben Hunter says:

    Hi Mwest,

    There is definitely a problem with the syntax of your rules.

    You can only have one default section. The best place to test for errors is the MININTztigather.log file.

    You should also have a look in the bdd.log file to see if there are any errors in there.



  54. Ben Hunter says:

    Hi Class,

    You can use multiple driverpaths.



  55. Rich says:


    This has been long awaited by my part.  Thanks for taking the time to post this.  Just a few questions.

    1) Regarding the WMIC – CSProduct Get Name command.  I ran this on my laptop for example, and here is what I got: 1951WBF.

    Are you suggesting to name the driver folder something like this: Models$1951WBF ?

    2) Regarding the customsettings.ini – DriversPaths1.  Do I need to have a separate entry for each model?  For example,


    DriversPaths2=\servermodels$Power Edge 2600

    3) Associate the applications with the model using the MDT deployment rules.  Can you explain this further?  Let’s say I already have all of my applications configured in MDT.  Right now I have them added in the Task Sequence to install as an application.  Is this necessary or can I use customsettings.ini to point to the source directory of the application install files?  Can you explain this further.

    Great stuff.  This has been very useful.  


  56. Hello,

    thanks for this deployment tip. I try now since a long time to deploy Windows XP SP2 with BDD. I have a HP notebook with a Intel SATA storage adapter. I add the Intel Matrix driver to the out-of-the-box driver, but the install fail every time. I can’t find the mistake.

    I’m tankfull for an idea



  57. Rich says:

    Hi Ben,

    Ok, got it now.  A question regarding the rules processing for the hardware based applications.  If I set this up according to your post, do I still need to add the applications to my task sequence?  I guess I’m not seeing the real benefit of the rule processing in this scenario.  

    In my environment I have setup the "BAD" drivers to install as applications and I tag those in to the State Restore phase in my Task Sequence.  

    Just looking for some clarification.  



  58. Rich says:

    Hi Ben,

    What if they’re not silent installs?  Just want to make sure this doesn’t mess anything up.

    As it is now, for the non silent installs, my techs have to intervene for a few app installs during state restore.  

    Would this behave the same as it does now?


  59. Hi Ben,

    I loved the out-of-the-box drivers in BDD for the good drivers. I created a driver group for each model in my environment and selected the correct driver group in the properties of each build. Now I want to upgrade to MDT wich has a lot of improvements but they removed this function.

    Is there a way or a script from the old BDD builds that I can use so I could select a driver group for a Task sequence just like you could select the Install Operating system.



  60. Andrea says:


    I know I’m confusing my past xp ghost imaging with MDT 2008 andhoping you can set me straight. I created a wim sysprepped and included the drivers in c:Drivers for the maachines I need to deploy with. Sysprep (with the mini setup switch) Build mass storage and populated the mass storage section. I have also added the paths to the drivers in the OEMPnPDrivers i sysprep. I also have the inject drivers in the task sequence and I know that the task sequence creates it’s own c:drivers. I supposeone way around this is to build the wim with MDT but what should I change?

    The task sequence hangs on the first reboot doing the mini setup – power off & boot to cd & the task sequence gives me an error, I boot again and mini setup runs and I can get into windows.There’s one pci device that hasn’t gotten installed. I can’t find the inf for that device in all the driver files that came with the machine but i will, or do you know off the top of your very knowledgable deployment head?This is the only failed driver that I see in the setupapi log file, so I assume that’s my problem with the task sequence bombing out. Even at intel I searched adn it came up with other id’s close but not this one.


  61. Hello Ben,

    i find the error! There is an error in the standard txtsetup.sif.

    When i try to install a english windows xp than the deploy run with no error. When i try to deploy the german windows xp the deployment process start and the file will copy to the hard disk and the first step run very well. After the restart the textmode setup will start and will stop with the error:

    in txtsetup.sif in section [SCSI] is missing "IDE CD-ROM (ATAPI 1.2)/PCI IDE Controller"

    i checkt the txtsetup.sif an the hard disk and there is the following line:

    atapi    = "IDE CD-ROM (ATAPI 1.2)/PCI IDE-Controller"

    when i change the source txtsetup.sif without the "-" the setup will run and deploy the operation system.

    the source files from a iso image from microsoft.

    is the error at the deployment or at the source files?

    best regards


  62. Rich says:

    Hi Ben,

    Any tips you can give me on finding silent installs for the "BAD" drivers?  I’ve been told by certain companies, like Nvidia, that a particular install just doesn’t have a silent switch.



  63. Andrea says:

    Rich – Thanks for that. Today I created a new task sequence and deployed and captured a wim that that works with the sata drive on this dell 755 using mdt 2008. I had problems with my task sequence and things not working and decided it was that causing me all my headaches. Sure enough. I’m celebrating tonight for sure. & thanks to all you guys who always have the answer. It’s a beautiful thing to see that task sequence finish to a white screen! I only wish I was still deployning Vista.



  64. Rich says:

    Hi Guys,

    I have this setup and so far everything is looking great!  

    I’ve also noticed the drivers in my models% directory being copied over the c:drivers location on the target PC.  My drivers appear to be installing dynamically, as this article describes.  That said, should it be copying the drivers to my c:drivers directory?

    Now that I have the "NICE" drivers installing with this method, I need to work on my "BAD" drivers.  I have one question regarding this documentation.  Step 4 under the Process – Associate the applications with the model using the MDT database or Rules.  I don’t use MDT database.  How do I associate the hardware based apps (BAD drivers) in the deployment rules?  Can we see an example of how I can use this?

    Thanks a million for this guys.  


  65. Rich says:

    Hi Daniel,

    I’ve tried using Winzip on some of these and am unable to get them to extract. I’ve also tried running the .exe from CMD and put a /? after the .exe  At times, I get lucky with this.  

    I tried to run some of these "BAD" driver installs while monitoring the %temp% directory as you stated, but I’m only able to see the source files (.dll for example), I get no information on silent switches.  

    Are you referring to actually repackaging the installs that include a silent switch?  This is an area I’d like to know more about.



  66. Rich says:

    Thanks for the info Ben.  Side note – How do I associate the hardware based apps (BAD drivers) in the deployment rules?  



  67. Rich says:

    Hi Ben,

    My Deployment Points in MDT 2008 do not show the driver groups, applications, and task sequences as shown in this blog.

    I see the note to Kelly explaining to add the RESOURCEROOT variable to the cs.ini.  Just for clarification, does this pertain to MDT 08?

    Also, if we could get some basic instructions on getting this setup, that would be great.



  68. Aviad says:

    Hi Ben,

    i’m using a single image and the MEDIA distribution point only. is this method work with the MEDIA ? and if yes how ?

    after i finish to create an image and capture it, at first boot when sysprerp is working how do the system know what is the path to the new drivers folder ? (\myserverdrivers$%model%)

    do i need to point the folder in the sysprep.inf ? we are talking about video drivers etc. (not mass storage)

    thanks in advanced,

    Aviad (faruzaviad dot gmail dot com)

  69. Chris says:

    Hi Ben,

    New to this so forgive the simple question. I have scoured the net for no answer. When I right click on my deployment point I do not see the tabs Task Sequence, Applications or Driver Groups.I also note that Your screen shot shows Network Properties. Mine shows Server Deployment Point Properties and only the General, Rules and Windows PE tabs. How do I bring up Network Point property?

    Thanks in Advance.

  70. Chris says:

    Thanks Ben,

    I am on the same page now. Keep up the great work. The deployment blog is a ripper.


  71. JaredCEG says:

    Ben,  thanks for the part 2 link. that is helping a great deal with my deployment. having s issue wiht a BAD driver… Its the XP Intel 945GM Video driver.  After the OS is downm, and all other apps are installed, I run the setup -s from my deployment server, and it jsut seems to hang.   On the screen, I have new hardware found wizards, and if i cancel them,  the video install continues, and finishes.  any idea ?  I also tried extracting the drivers, and trying it that way, and it didnt work that way either? any thoughts ?



  72. JaredCEG says:

    Ben,  I have a Lenovo X60 machine, that when I build it out with a custom WIM that Ive created, and using the drvierspath001 in CS.ini to copy over all drivers in the drivers folder I have for that make/model, give me a “!” on 1 of the 2 display drivers listed in device manger.

    The 1st one lists correctly in that it’s a Mobile Intel® 945 Express Chipset Family,

    The 2nd one, lists as a Video controller ( VGA Compatible)

    I know the drivers are there in the driversvideo folder, as if I go to update the driver, and point to that folder, it finds the driver, and closes the “ new hardware found” open window.  

    Any Idea how I can tell MDT to look for both drivers in the same folder ?

  73. JaredCEG says:

    I created the custom WIm on a VM machine.  the Os im deploying is XPSP2.  

    Thanks Jared

  74. JaredCEG says:

    Ben, Ill check that out and make the modification if necessary.  Thanks for the idea.  


  75. JaredCEG says:

    Ben, That worked.. i know ive had that ine before in my sysprep. Dont know how I missed that one. Thanks !

    another question, where the MDT copy the drivers folder over to on a vista machine? is it still to the c:drivers folder ?  

    reason im asking is that I ahve my rules to do that, and i dont see the folder on the machine im tesing on.


  76. Isael says:


    MDT installed

    Distribution with applications and drivers

    OS targets the WDS images

    Basic Custom Win XP SP3 without drivers.

    Database and UserExit.vbs creating alias for IBM Models.


    When I build a client on a 6072 Machine the drivers are applied and installed

    When building on a 8104 Machine the drivers are copied on c:Drivers but not installed. I run Device MGR and can right click them to install automaticly ( DevicePath in registry seems ok )

    Sysprep is updated by ZtiConfig properly with OEMDriversPath.

    The autologon works, but since the network driver isnt installed , the bind to my deploy share can’t be made.

    In my setupapi.log I get error # 0xe0000219

    On my Sound,Network,Video and TPM Drivers

    I noticed that multiple folders are copied on c:Drivers ie: and with same files. But I don’t think it should cause the problem.

    Any ideas ??

  77. Darren says:

    I am using your method above with great results. The question I have is I am deploying to IBM/Lenovos and they have various 7 digit model numbers such as 814324U. The first four 8143 are the actual model and the next 3 I guess is the minor version of hardware setup. Sometime we have upto 10 different minor revisions of the same hardware. Is there a better way to handle this than having 10 different folders of the same drivers in my models share and 10 different Make Model db entries?


  78. olivier says:

    I have implemented the database with MDT, I use requests make an model for the drivers. It works perfectly to deploy XP operating systems.

    But now I going to use a same PC (so same make and model) for deploy Vista, so how can I specify differents Operating systems for my drivers into the database ?

  79. shane says:

    Hi Ben,

    First of I have been using the above method for working with drivers and it has worked fine, but the other day I came accross a little problem, I have a new server that is returning a %model% of "IBM 3850 M2 / x3950 M2 -[71414RM]-" as the "/" cannot be used in a folder name therefore the use of the driver paths method does not work, is there a work around for this? or have you not come accross this problem.



  80. ZachF says:

    I didn’t see an example of how you would setup a BAD driver.  Is there a way to associate a model with an application?

  81. MikeWest says:

    Sully07 – I am having the same exact issue.  I have the ICH9 driver in the appropriate Models$ share and verified the %Models% is the right share name for this machine.  

    It will format the drive, create a partition, copy the files for installation, then when it actually tries to run windows(when you should get to the 39 minute installation screen) it says error loading Operating System.

    Mine also works if you switch it to ATA, but don’t want to do that with 200+ machines.

    I am not sure what to do since the process I use has been done for every other install and been successful.  

  82. Claas says:

    Can you use multiple DriverPaths?




    CORE being a folder that has OEM driver Packs from Intel Chipset, NVidia, ATI which contain many many different drivers and span multiple machine models.

  83. Yalu says:

    Hello everybody,

    I am pretty new to Windows Deployment. Nevertheless, this blog has already helped me out quite a lot. Thanks.

    One question though. Regarding your suggestion to use model aliases (Apr 23) to manage "BAD" drivers and HW specific applications, I was wondering if a similar construction could be used for the DRIVERPATH-property?

    In the proposed setup, it seems to me one has to create a subfolder under \SERVERNAMESHARE to account for all possible models.

    Would a construction like:




    be valid? In other words, how can one use model aliases in combination with the DRIVERPATH property?



  84. Kevin says:

    I have one question regarding using the Out-of-Box Drivers versus using DriverPaths.

    We have a variety of DELL machines in our enviornment.  AS some of the older models get out of DELL’s rotation, they stop updating their driver libraries.

    Using the Out-of-Box method, you "could" capture updated drivers just loading new drivers into the driver library, and injecting "all good" drivers into your image.

    Using the DriverPaths method, you need to manually refresh the drivers for each model.

    Are their caveats to injecting "all" drivers from the Out-of-Box driver library?  Could you end up with conflicts?

    Since the Out-of-Box method does not install all "good" drivers, is their a technique to determine which drivers will work with the Out-of-Box method?

    Finally outside of looking for a setup.exe or msi files, are their other techniques to determine if a driver is a "bad" driver?

    Thank you for all the great information,


  85. darci says:

    Hi Ben

    Your post is invaluable!  Thanks so much for your practical advise and also for monitoring the comments still, 9 months later. Can you give me some insite into how to figure out the default Variable names?  How did you know to use DRIVERPATH1?  

    I would like to introduce some conditional logic in which ‘if dell utility partition exists’ format partition 2 and install xp there instead of formatting entire hd and losing said partition.  I did read through all your old posts but if I missed a spot where you addressed this basic subject I’d appreciate a link.


  86. guille says:

    Ben, I’m having some problems with WinPE finding a network driver for intel dq45cb motherboards… I keep getting "Invalid Credentials: Network path not found", and it can´t connect to my ditribution share…

    What I don’t understand, is that if this article is for those cases, or just for the cases that after booting, the deploy is not taking the network driver… So, if it’s my problem, why are you not creating the folder structure in the lab image? Because at the beginning, when it asks for credentials, you haven’t chose any separate deployment share… So why is it going to take any drivers from those shares?

    Thanks in advance

  87. Trent says:

    Thank-you for this guide! I followed your guide here and I can already see the benefits of managing drivers this way.

    I do have one Tablet though that won’t pull down the correct network driver. I have added the Network driver, after verifying it was the proper driver, to the WinPE driver group. I have also verified that the .inf file is located within the ‘Out-of-Box Drivers’ directory. I can’t find a log file that sheds any light onto my situation; why the proper driver isn’t being loaded.

    Do you know where I should start, or which log file should contain the information I’m looking for?


  88. Trent says:


    As with everyone else here I am very grateful of your posts!

    I have a new tablet that is giving me trouble with the network driver. I have created the driverpath structure, added the network driver to the ‘WinPE’ group and have verified that the driver has been added to the Out-of-Box Drivers (When I view the properties of the driver though the ‘WinPE’ group isn’t selected). I have looked through the log files and can’t seem to find my problem.

    Do you know what log file I should be looking at to help me identify my problem? How do you recommend I move forward?


  89. Zouleous says:

    I’m trying to do this for the first time with MDT 2010.  There are no longer driver groups in 2010 so would you approach this the same way through selection profiles?  Is there anything you’re now doing differently due to changes in 2010?

  90. Andrea says:

    Ben- Been going well since I built the images in ’08/09 using MDT 2008. All dells and tasks all work fine to build and deploy using task seq created- until the Optiplex 760 came along. I added the one different dev id in sysprep.inf the path in the OEMPnPDrivers- but I can’t get this to deploy to other machines- or built on another to deploy to it, and have even had a problem with a capture and deploy to it, although I got that working, broke it again when trying to get something to work. I know it’s the mass storage drivers. I had three diff drivers- 7.6 came with opti 755, 8.22 came with notebooks, and 8.8 which came in with opti 760. The unattend works fine but the sysprep and capturethen deploy crash with a 07b error, mass storage of course.  All the drivers are in the out of box drivers too. Is that my problem? Should I disable? The 7.6 has device ID’s that 8.8 does not have. The way I’ve done it has always worked- I have seen other people having issues between the 755 and the 760. The boss at this point wants me to build something that juts works on the 760 and worry about it later- since i broke it I’m trying to get back to that point. Thought I had this licked a couple years ago- (still XP and MDT2008)

  91. mikel says:

    Hello Andrea ;

    Your post is from January 2010 , so I would like to ask you one question because you are using WINxp and mdt 2008 , just like me.  

    Do you keep dell utility partition, format partition 2 and install xp there instead of formatting entire hd and losing utility partition?

    I can not do it , do you know any script that format the second partition and install OS there ?




  92. Jeff25 says:

    I can't seem to get the WQL Query to work after I add it as a condition to a driver package. Shuold I see positive results after clicking Test Query? Mine fail.Is says syntax is vaild, result count 0.