LTI/ZTI Deployments: Injecting drivers during deployment

One of the best reasons implementing MDT 2012 is the way it manages your drivers. I had a customer who was using WDS only for deploying their Windows 7 images. They told me that the deployment would halt for around 30 minutes when applying drivers. The problem there was that every driver was being to applied to every machine during deployment. I explained to them a few ways in which MDT could help.

Small Scale

When you create a new Operating System deployment Task Sequence, the default behaviour is to Install only matching drivers from the selection profile. This will save an immense amount of time without you having to do anything.

ApplyDriverSelectionProfile-Default

For small deployments with up to 10 models and only 1 version of Windows these defaults will suffice and I would continue to use them.

Medium Scale

If you have multiple Operating Systems I suggest using the driver selection profiles to isolate each Operating System and Architecture(x86,AMD64).

ApplyDriverSelectionProfile-Win7

Large Scale

For larger organisations where you have many makes and models (25+) and multiple OS versions I suggest isolating your Drivers by Operating System/Architecture and Make/Model then dynamically applying the drivers. This will isolate and ensure that only the exact drivers are downloaded in injected during your deployments.

Here’s how it’s done. Organise your drivers by using the driver management methods in my previous posts:

Your drivers will now be organised in a tree hierarchy like in this screenshot.

This time we wont be using the selection profiles so change the selection profile to nothing.

ApplyDriverSelectionProfile-Nothing

Next, create a new Task Sequence Variable for DriverGroup001 and enter a value for the Operating System root folder then make and model variables.

SetDriverGroup

Now during your deployments, MDT will only apply a small subset of drivers to each model.

You could also do this in the customsettings.ini by adding the DriverGroup property to a specific path. This example demonstrates such a method but assumes you have only 1 Operating System.


[Settings]
Priority=Model, Default
Properties=CustomProperty

[Default]
OSInstall=Y

[OptiPlex 755]
  OSDComputername=PC%SerialNumber%
  DriverGroup001="Windows 7 x86\Dell Inc\OptiPlex 755"

[HP ProBook 6560b]
  OSDComputername=PC01
  DriverGroup001="Windows 7 x86\Hewlett-Packard\HP ProBook 6560b"

About Andrew Barnes

A Scripting and Deployment Specialist.
This entry was posted in MDT 2010, MDT 2012, SCCM and tagged , , . Bookmark the permalink.

18 Responses to LTI/ZTI Deployments: Injecting drivers during deployment

  1. Fid says:

    Hi there i have tried the structure for total control I have downloaded the newest nic drivers from HP and also from intel, but i keep getting the error

    A connection to the deployment share(\\server\deploymentshare$) could not be made. The following networking device did not have a driver installed. PCI\VEN_8086&DEV_1502&SUBSYS_179B103C&REV_04
    Retry: try again to connect to the deployment share. Cance: give up, cancelling any iin-progress task sequence.
    Do you have any suggestions on what i can do?

    Like

  2. M Frahm says:

    How do you typically manage drivers in this structure when newer versions are released, especially when the same driver & version updates apply across several models & architectures? Example is I have many Dell OptiPlex and Latitude machines with commonalities, but I want to avoid having too many old versions of the same drivers out there.

    Liked by 1 person

    • This is not a driver management solution but a driver organisation solution. Typically, I tend to set up systems and organised them from chaos.

      Like

      • Fid says:

        I was able to setup the Folder management, at first i was not able to because powershell was restricted, after setting it up for unrestricted I was able to run the folder organization file. The problem i have now it that when i try to run your other file i keep getting a lot of red errors.
        I am also having errors just typing .\Import-MDTDrivers.ps1 -DriverPath E:\Downloads\Drivers
        Is there any suggestions that you have in order for me to try out to get this working.

        Like

      • Hi there,

        email me a screenshot of the error and I’ll let you know what’s going wrong.

        /Andrew

        Like

  3. Squeezer says:

    To get the computer’s vendor name “Dell Inc” you can run in a dos prompt:

    wmic computersystem get manufacturer

    and to get the model name of the system run:

    wmic computersystem get model

    Like

  4. John Gaeng says:

    When I run “wmic computersystem get manufacturer” I get the output “Dell Inc.” with a period but the example above does not use the period. Does using, or not using, the period make a difference?

    Liked by 1 person

  5. Is there a way to point multiple model numbers to the same driver folder? Example: I have Lenovo desktops that might be model 8189E1U, 8189EAU, and 8189M3A. The first four of the model is always the same. The last three usually means a slight processor upgrade or a finger print reader has been add. I would like to use the just one folder “Out-of-Box Drivers\Windows 7\x86\LENOVO\8189” ,instead of three different folders all with the same drivers (8189EAU, 8189E1U, 8189M3A). Thanks for all you do on your site! I am a big fan!

    Like

  6. swimex says:

    Hello,

    I’m so confused, I have the problem with the drivers %make% %model%
    I’ve tried alot of solution and nothing happen.. still not going right.

    So I work with MDT 2012 That installed with ADK plus WDS on Server2012.
    Everything work perfect thanks to you Johan videos. but only the drivers i have to figureout.
    I Created Folders for My Own Computer I check with command prompt i wrote wmic computersystem get model & also manufacturer.

    So i get to the MDT and i create folder called
    Windows 7 x64
    Inside the Windows 7 x64 i create folder for the %Make% called – Gigabyte Technology Co., Ltd.
    And Under Gigabyte Technology Co., Ltd. I’ve create folder for %Model% called G41M-ES2L
    After that i go to the Task Sequence and Create “Set Sequence Variable” and I put In the line
    Task Sequence Variable: DriverGroup001
    In the Value Line: Windows 7 x64/%make%/%model/

    After that I go to the Injecting Driver and i changed to “NOTHING”

    And i Update the MDT 2012 SHARE And Boot again and nothing smell like the driver suppose to work, and keeping to the [ 4% Applying Settings ] with out installing the driver.
    So I check another solution to delete all I’ve done, and create another option.

    So only i decided to change is to delete the Set Task Sequence

    and to go Gather local only and to change it to gather only with data prosess and i put in the line

    CustomSettings.ini.

    And in the CustomSettings.ini I set command : DriverGroup001=Windows 7 x64/%make%/model%
    After that its still going to no ware.

    And I saw the Videos of Johan and anyone and no luck please help 🙂

    Thanks alot 🙂

    Like

    • Try using my scripts to create your share and stores. They do it all for you. I’d say do it in a test deployment share, then it’s risk free and you can then mirror the solution to your own environment.

      /Andrew

      Like

  7. Raymond Mui says:

    HI.

    May I ask what will happen if a new computer is not in any of the Model/Make? Would MDT search for the driver from the fodlers?

    Thanks

    Raymond

    Like

  8. GmAv says:

    Is there a way to go one step further, and use a variable like %OSname% and %OStype%, instead of using “Windows 7 x64” – this would making task sequences, based on a template, much easier. We’d essentially be able to ignore the driver section, and let it figure it out on it’s own.

    I know %Make% and %model% are determined with a script, can we modify the script to determine what OS is in the “OS” Tab of the task sequence? Just an idea.

    Like

  9. Joe Grossi says:

    Hey I had a great solution working…
    …until I updated the reference image.

    I had Set Task Sequence Variable DriverGroup001 to Windows 7\x86\%model% (right before Inject Drivers.)

    Everything worked fine until one day I had to update the Base/Reference image.
    In the reference image I made a few very small modifications.
    I re-imported the reference image as an Operating System and updated the Task Sequence to install it.

    Now, when I deploy the image, I’m seeing a lot of these error messages:

    Skipping Device PCI\VEN_8086&DEV_3B44&SUBSYS_216417AA&REV_06 No 3rd party drivers found. 5 ZTIDrivers 11-02-2013 08:16:57 0 (0x0000)

    Nothing in the task sequence changed, only the reference image.
    The variable is still being defined correctly when I look in VARIABLES.DAT, I see DriverGroup001 = Windows 7\x86\Latitude E6520

    Any idea what I should try?
    Thanks!

    Like

Leave a comment