Jason Condo at myITforum.com

Ramblings of loose mind - if it deals with workstation or server management, I'm there!

October 2011 - Posts

Leveraging the MDT customsettings.ini for defining drivers for SCCM OSD

I have had customers want to manage device drivers easily and while the built in task sequence for applying drivers allows you to specify a condition and then install a specific category of drivers or all drivers from a package (http://blogs.technet.com/b/deploymentguys/archive/2008/02/15/driver-management-part-1-configuration-manager.aspx), I like looking at a simple task sequence without 20 tasks for installing devices.

If you have MDT integrated, you can add a gather sequence and add the following information that will override the “choose from categories” values for that specific model. It would mean you would need to add the drivers to a category for that model though. I found the powershell from Michael Niehaus on importing drivers into SCCM and finding duplicates worked wonders for helping to manage drivers in ConfigMgr (http://blogs.technet.com/b/mniehaus/archive/2010/04/29/configmgr-2007-driver-management-the-novel-part-2.aspx). I can now just place any extracted drivers into a directory structure matching the category naming and it imports and updates drivers easily for me.

Anyways, if you add "Priority=Model,Default" to you customsettings.xml and then add a section for your model as returned from a gather task (can be found in your bdd.log) you can specify the drivers you want. The following is an example for a file that would support Lenovo and Dell. The assigning of models can also be done with MDT DB integration, but if you only have a few models you are concerned with, you can just specify them here. Also, if you need a specific app based on model installed you can add the task to install software and specify "Install Multiple applications" and use PACKAGES as the base variable name. Then just add the PACKAGES001(002,003,etc…) with a package id and program name to run it.

It helps me keep my task sequences from being so huge with tons of model checking since I like to be anal about specifying drivers and apps per model.

[Settings]

Priority=Model,Default

Properties=OSDAutoApplyDriverCategoryList

….

[766945U]

;Lenovo X61

OSDAutoApplyDriverCategoryList=DriverCategories:f4bc60c1-74d8-4708-aae0-7d30a0f2d0d2,DriverCategories:d450655d-fcb5-4059-8554-15ff4b1d1c47

PACKAGES001=CLE00000:OSD Install Fingerprint Software

[OptiPlex 330]

;Dell OptiPlex 330

OSDAutoApplyDriverCategoryList=DriverCategories:d450655d-fcb5-4059-8554-15ff4b1d1c47

Now you might ask how I get the DriverCategories:<GUID> value that I use in the section. While there are some neat scripts you can find and run, I’m lazy and just created a blank task sequence with a install drivers task pointing to the specific category I want. I export the task sequence and open the XML and the information is there for me. I can even build that task sequence out for all my models (minus the WMI query conditioning) and then export and use a little Find and Replace to reformat the file to paste into my customsettings.ini directly.

Actually I love using the customsettings file and defining variable in it that manage sections of my task sequences. It enables me to turn on and off groups/tasks in the task sequence without going in and editing it directly. I just set a condition at a group to look for the variable to not be set to true (or something like it). It will run the group of tasks if the variable doesn’t exist or is set to something else (say false). This allows me to disable a group tasks in production as I work on testing it (using a duplicate task sequence) and then just publish the updated custom settings file to make it live in production once it works as expected.