Setting variables through a Task Sequence

For sure , the last post before a long time as I'll flight to South-East Asia next week...

I was at a customer site a week ago and I had the "challenge" of rolling deployment of Windows Server systems with MDT 2008 with as less stuff as possible in the CustomSettings.ini and no database to store configuration (hell !).

Well, that's quite easy in reality.

The goal today is to define the Driver Group involved in the deployment of a particular computer model for a particular OS through a Task Sequence.

Inject drivers and define Driver Groups

This is the first step. You have to inject drivers into the Distribution Share from the Deployment Workbench. You will so be able to install them during a deployment through the Lite Touch process.

I always have three recommendation around drivers and MDT:

  • Identify THE driver you need for a computer model by retrieving its DeviceID on an installed machine (via Device Manager) then be sure to point to a folder containing ONLY the files for that driver (as far as it is possible to do). Look into the .INF files to find the corresponding DeviceID.
    You already realized that when you download a driver package from a manufacturer, there's plenty of devices supported by this same package and billions of files inside it (hey, I joke !).
    So just be sure to present to the Workbench the required .CAT, .SYS and .INF for the device you plan to inject (by the way, sometimes, you will have some .DLL required and so on...)
    I provide this recommendation because, if you're rigorous with that, you will not have to drill through the Workbench to find the driver you want to consult beyond billions other ones that will never be used...
  • Create at least a driver group per model/Operating System and give them a name constructed with information that will be queried in the BIOS for the make and model + the identification of the OS (e.g. HP-ProLiant DL380 G5 -WS08- , HP-ProLiant DL380 G5 -WS03- and so on...).
    This will let you dynamically identify the adequate driver group to use when deploying this specific model. Read on, this is the purpose of this post !
  • Create a driver group to be used when building the WinPE image (you have the ability from a Deployment Point properties panel to select a driver group that will be used to retrieve drivers to be injected into WinPE).
    This will ensure that when you build you WinPE that not ALL drivers will be injected and thus have a huge WinPE image !
    So only include in this group required NIC and mass-storage drivers that are not already present in a default WinPE image.

Note : in the Deployment Point properties panel, in the Windows PE tab, be sure to select the correct driver group you created for WinPE and that you selected system-class drivers as some network card drivers are identified under the system-class and not the NIC class...

image

Customize the Task Sequence

When you have created the Task Sequence used to deploy the target Operating System, create a new task (type : Set Task Sequence Variable) just after the predefined task Gather local only in the Preinstall section :

  • Name : Custom – Set Driver Group
  • Task Sequence Variable : DriverGroup001
  • Value : %MAKE%-%MODEL% -WS08-

image

Which will be set to "DriverGroup001 = HP-ProLiant DL380 G5 -WS08-" when Lite Touch will have retrieved BIOS informations.

For Windows Server 2003, you can also use the StorageDriverGroup variable to let Lite Touch manage the installation of mass-storage drivers while performing an unattended installation. Just add the same type of task at the same level of the sequence and use the variable StorageDriverGroup001 and a driver group defined for Windows Server 2003 (e.g. %MAKE%-%MODEL% -WS03-).

image

You will no more have to use the $OEM$ structure !

~ Guillaume

Note that this post is provided "as is" with no warranty nor supportability engagement. It does not engage Microsoft at all.
Nevertheless if you consider this not clear, incomplete or inadequate, please let me know !