ConfigMgr OSD - Fixing the Windows ADK 10 v1607 driver issue - Best practices from Nathan Kofahl
By: Nathan Kofahl (@nkofahl)
I work for HP Inc. in a group that handles technical escalations from our Presales Client Technical Consultant team. My area of focus over the last few years has been increasingly centered on working with our customers to deploy our hardware using SCCM and or MDT. The information and task sequences that are made available via this post are largely a result of interaction with numerous clients that are “just getting started” with SCCM and were originally created as a method to help our Technical Consultant team quickly and easily communicate best practices to these customers. As such the content of this post will be HP Inc. centric. This blog post is my own and I am not speaking for HP Inc. here.
As mentioned in the disclosure, my job at HP Inc. has been increasingly focused on helping our customers deploy our client products via SCCM and MDT. On a regular basis, I meet with customers and give them a “Welcome to HP” presentation that focuses on helping them get new hardware deployed via SCCM in a way that is easy to manage, uses existing HP Inc. tools and hopefully communicates best practices in a way that makes their lives easier for the hour or two that they spend with me in a demo environment. As part of this process I started working on materials that I could leave behind to help reinforce the live discussion. I’ve sat in many technical presentations that left me with nothing more than hundreds of slides and decided that I wanted to provide my customers with something more practical and tangible. To accomplish this, I created a library of exported SCCM actions that can be imported into a customer’s environment. I spent some time today reworking one of those tasks to support workaround #2 as mentioned in this awesome blog post by Frank Rojas (@Rojma).
Exported Task Sequence
HP Client Integration Kit (Recommended method for obtaining HP Client Driver Packages)
In this section, importing and populating my workaround task sequence will be demonstrated. If you are not going to install the HP Client Integration Kit (CIK), you will need to download/import HP’s Client Driver Packs, or create your own as the exported task sequence does not have these packages already populated.
Importing The Task Sequence
On the File Content page of the wizard you should be prompted to “Create New,” if you receive an import error, in the Action drop down, select Ignore Dependency
When finished, in the root of your Task Sequences section you will have a Sequence titled Win7 + ADK 1607 Driver Workaround
Right Click this Task Sequence and select Edit. You’ll see that there are several Download Package Content steps with the appropriate WMI call to the Win32_baseboard product value for the systems supported by each driver pack. HP, going back far before my employment, standardized on the Win32_BaseBoard Product value as the identifier used by all of our internal tools
Populate the Packages
In the Configuration Manager Console, select Software Library > Operating Systems > Driver Packages
Right click on Driver Packages and select Download and Import HP Client Driver Packs
In the Operating System drop down, select Windows 7 Professional 64 Edition and then type the product names for each package you wish to download and import. Click the right facing arrow to add a product to the list. Select your Distribution Point and a location for storing the packages. I find it helpful to have the driver Task Sequence open side by side with this download window to make sure I don’t forget any platforms
Once finished with your selections, click the Download and Import button
Go get coffee, this will take some time!
When finished you’ll see this screen
When finished hit the Apply button
Open the Task Sequence to which you want to add these driver injection steps
Disable your “old” driver injection steps
A Note on Unsigned Drivers
In the official blog post from Microsoft, there are some slightly different steps designed to handle a situation where deploying unsigned drivers is desired. HP’s published driver packs should not include any unsigned .inf files, as such, I have not included any provisions for deploying unsigned drivers in this post. If you build your own driver packages and you include unsigned drivers, please refer to the official Microsoft post for the alternative DISM command that allows unsigned drivers.
A note on Task Sequence Organization
I treat task sequences the same way I treat scripts. If I write or "borrow" a script block that accomplishes a desired function (e.g. defining variables with WMI calls), I generally save that block, in a location from where I can quickly create a new script from component parts.
In Configuration Manager, I maintain a main folder for each Operating System task and a component folder of various steps that I use in building Task Sequences.
I recommend that my customers use this same method of organization. The primary advantage is that it makes copying components into a development/testing task much easier. Troubleshooting drivers in a huge task that does 100 different things specific to your organization takes way too much time. A better troubleshooting path is to strip the Sequence down to the bare minimum required for testing. As such, maintaining a components folder is useful for these tasks.
Additionally, this enables a workflow I suggest customers implement in their environments. Once a quarter, customers should review their driver injection Task Sequence and replace out of date driver packs via the CIK. Once that is complete, test and verify that the deployment functions as expected. Finally, copy this driver injection component into your production Operating System deployment Task Sequence.
I maintain a library of task sequence components that are located in this Google Drive folder, there are a number of items that you may find useful. Feel free to use them and distribute them in any way that makes your life as an OSD Administrator easier!