WaaS – Download Drivers from Vendor (Internet)

Hey Team, I’ve been working on updating our methods for populating Drivers / BIOS into ConfigMgr [Scripts here on GitHub] and thought, it’s basically the same script to download them directly onto a machine and extract as it is to download the driver packs to the source server for a CM Package. So with a little tweaking I came up with the idea of having the driver pack download straight from HP or Dell onto the machine, extract, and make a variable to the location to be used in IPU. [Included in the WaaS Download, version 2020.04.16 or higher]

History: We currently dynamically download the driver packs from our DPs by having a TS Step that acts as a database for all of the models and which Driver Package IDs are associated with them, so it knows which one to download, then sets a varable to the downloaded location in the ccmcache. https://garytown.com/driver-pack-mapping-and-pre-cache-v2

For this new idea, I left that intact, but added a condition to allow downloading the drivers from the internet instead. You can do this different ways, currently we also capture if the machine is running on VPN (This will be a unique step depending on your VPN, so I can’t say my step will work for you), so I’ve added that as a condition on the Download from Internet.

Created Var: DownloadDriversFromInternet and use that to trigger the download. This was an easy way for me to test to make sure it ran, but you can be more dynamic about it and have it only run if on VPN for example, or add other checks to make sure it’s not coming back through your VPN. Those checks will be specific to your environment.

The Module is pretty small, with a few steps. HP relies on the HPCMSL being installed, so if you already have that on all of your HP Systems, you could trim this back.

HP: The Script leverages the intelligence built into HPCMSL to know what DriverPackage to download for the model of the machine it is running on.
The script will request the Driver Pack that MATCHES the OS you are installing (%SMSTS_BUILD%). IF there is not a driver pack for your model, it will grab the latest one available.

Once it downloads and confirms it’s downloaded, it will set the TS Variable.
Before it downloads, the scripts will check for a previous download, if the Softpaq (HP) or cab file (Dell) Match what is already there, it will skip downloading and continue on to set the Variable.

Please NOTE, this does not include any hash checking.

The same Steps will need to be in both Pre-Cache TS & IPU TS. It will pull down the content during Pre-Cache, then confirm during IPU (or download if not there).

Here you can see the Module, the script sets the variable, which is then used in the “Staged content” field in the Upgrade OS Step
You can see in the logs when running, that the Setup Engine sees the DRIVERS01 variable is set to c:\programdata\DriverCache\Expanded and uses that for the driver package during the upgrade.

Hopefully that explains it well enough, hit me up with questions, or just play around with it.


15 thoughts on “WaaS – Download Drivers from Vendor (Internet)”

  1. Hi Gary,

    Nice solution, do you think this solution will work from a SCCM Standalone media ?.

    And have you try to get drivers from Lenovo this way.


    • This solution should work from standalone media assuming the machine you’re running on has an internet connection.
      I don’t do any work on Lenovo, so I haven’t tested or built anything, but using their system update tool, I’d think it would be completely possible.

  2. If we enable this, do we need to disable “Drivers from Internal DP”? For example, lets say the task sequence downloads the latest drivers from HP and then immediately after that it sees the local DP drivers that might not be as current. Will it use the DP drivers because it came later in the task sequence, or will it know that the drivers downloaded from the internet are the better ones to use?

    • Nevermind.. found my own answer in the “Drivers from Internal DP” options. It looks like it will only run this step if DownloadDriversFromInternet not equals “TRUE” or DRIVERS01 does not exist.

  3. Hi Gary,

    Can you please provide me the script to download the drivers from internet and install it? I cant find it here and on Github.

    Many thanks in advance.


  4. I got playing around with these modules and they didn’t seem to work for me (perhaps proxy) but you scripts located at the links above related to HPCMSL and those worked. I kept getting errors indicating “Find-PackageProvider : No match was found for the specified search criteria and package name ‘NuGet”

    Your other script at had that hard coded in. Does the module work only if that is installed first? So I should flip a section out to install HPCMSL (your script seems to actually install it and then update drivers all in 1 go).

    Can the entire module be replaced with one of your scripts like “RUN-HPIA-FUNCTION.ps1 or HPIA_TS.PS1?

  5. Hi Garry,
    Do you any chance have a complete WaaS Task Sequences for deploying new OS rather than OS upgrades. If so, would you mind sharing the TS and associated files.


    • I have posted an OSDCloud TS, but I haven’t posted an entire OSD TS, mostly because my OSD TS is crazy, and doesn’t really make sense, as I’ve gotten so many POC’s built into it. Some of my TS perfers pulling content from DPs, and parts of it wants to pull the same content from the cloud. Someday I’d like to post a few versions of the TS based on content preferences. I just haven’t had time.


Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.