I am currently working on the new Windows 10 v1903 at my company and our main goal is to deliver a fast and automated deployment. Implementing drivers through driver packages in SCCM can be very time consuming, so we needed a solution for that. And luckily, we found one. It’s very easy and maintainable. Here’s how to do it yourself.
Get the driver packages
Each vendor has it’s own repository with drivers for the model you’re using. In my case, we’re using the repository of HP for our EliteBooks. You can find the repository here.
Prepare a SCCM Package
Just download and transfer the file to a folder on the SCCM server of your choosing. Create a directory structure so you can easily find them back when you need to.
- Open the executable file and extract the files to the folder you’ve just created.
- Now, go to Software Library in the Configuration Manager Console. Select Packages and create a new regular package.
- Make sure you tick “This package contains source files” and choose the location of the drivers you extracted.
- Choose Do not create a program.
- Distribute the package to your Distribution Points.
Integrate in the Task Sequence
- Go to your deployment Task Sequence and add a Run Command Line task.
- Add the following command:
DISM.exe /Image:%OSDisk%\ /Add-Driver /Driver:.\ /Recurse
- Choose the package you created earlier on.
There is no need to add DISM in your package, since it’s included in the Windows Assessment and Deployment Kit.
Make it pretty
Now we need to scope the task down to only run when it applies for the model.
Please note! Some driver packs (especially those from HP) support various models, so you might want to dive into your own models to make sure you avoid unnecessary deployment resources.
- Make sure you change the succes code to 2 and 50.
- Go to options and add the following WMI query:
SELECT * FROM Win32_ComputerSystem WHERE Model = "HP EliteBook 850 G4"
You might want to add some more if you can use the same pack for other models.
Within a few minutes you can add or change a complete driver package for one or more models. It’s not only faster, but it also works 100% of the time. We compared the deployment time with driver packages versus this method, this method was 8 minutes faster than the driver package method.
There are a few things that we still need to automate and therefore a few questions that popped up:
- Automatically download and extract new driver packages from the vendor. How often, and how are we going to compare versions?
- How are we going to test the new drivers compared to our existing drivers?
- Is it possible to change a set of drivers without having the task sequence edited?
- Do we even want to automate this?