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.
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).
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:
- MDT Powershell: Creating a Driverstore folder structure
- MDT Powershell: Importing device drivers from organised folders
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.
Next, create a new Task Sequence Variable for DriverGroup001 and enter a value for the Operating System root folder then make and model variables.
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"
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?
LikeLike
Hi there,
Yes, I can help with this. This is common error and easy to resolve. I’ve written a post on this issue here: http://wp.me/p1v18I-wc
/Andrew
LikeLike
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.
LikeLiked 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.
LikeLike
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.
LikeLike
Hi there,
email me a screenshot of the error and I’ll let you know what’s going wrong.
/Andrew
LikeLike
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
LikeLike
Thanks for that tip, Squeezer.
LikeLike
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?
LikeLiked by 1 person
The dot at the end is part of the manufacturer name so if you’re coding any logic that equals then you should leave it in for it to work.
LikeLike
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!
LikeLike
Yes, there’s a user exit script sample here. http://systemscenter.ru/mdt2012.en/deplthecorrdevidrivtocompwiththe.htm
LikeLiked by 1 person
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 🙂
LikeLike
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
LikeLike
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
LikeLike
It would just be ignored. You have to manage your solutions for changes. You could write a script that creates the new folders and emails you when it happens.
LikeLike
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.
LikeLike
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!
LikeLike