HPCMSL – New-HPDriverPack

HP is about to release an update to the HP Client Management Script Library, (1.6.5) and with it, a new Commandlet, New-HPDriverPack. This fills a void with driver packs that has been plaguing us for years. The issue HP tackled? Stale driver packs! Typically driver packs get updated… rarely, lets go with that, but individual drivers get updated much more frequently. Most vendors provide tools then to update drivers on machines running the Full OS, but until today, that meant having to first run OSD with old drivers, have the OS installed, then run HPIA to update the drivers to current versions. Now, you can create your own custom updated driver packs and be far better after the first time the Full OS comes online.

New-HPDriverPack, this command will allow you to feed it the platform code, OS (Win10 or Win11), and OSVer (21H2, etc), and build a driver pack based on those findings.

Example Command:
New-HPDriverPack -Platform 8730 -Os win10 -OSVer 21H2 -Path C:\HPStaging

Outcome, a folder with inf drivers that you can DISM into the Offline OS during OSD.
You would take this output and build a driver package in CM for deployment during OSD

Output Folder Structure

I really like this structure, I know exactly what driver and what SP# it included, and for PowerShell automation for updating driver packs, the manifest.json file makes it easy to compare between driver pack creations.

Manifest JSON File
Legacy Package with the Driver Files


Original Pack Test (OP): I’ve taken four of my HP Models I have in my lab and ran tests. I ran OSD with the basic driver pack, then ran HPIA scan to determine missing updates.
Updated Pack Test (NP): Ran same Task Sequence but with Driver Pack created with New-HPDriverPack

Task Sequence:
DISM Drivers Step (Part of Child Task Sequence)

Highlighted is Child Task Sequence called above to download the driver package and apply it with DISM
HPIA Step to record missing updates – Reaches out to HP on the internet and scans machine for updates, running in “report” mode.


  • HP EliteBook 840 G3 : HP-EB-840-G3
Original Driver Pack
New Driver Pack

Results: You can see, while not perfect, it is MUCH better, going from 13 out of date to 4 out of date.

4 Drivers that were out of date still after using the New Driver Pack
  • HP EliteDesk 705 G3 : HP-ED-705-G3
Original Driver Pack
New Driver Pack

Results, went from 1 Missing driver to 0, and 2 out of date to 1 out of date

1 Out of Date Driver
  • HP ProBook 445 G7 : HP-PB-445-G7
Original Driver Pack
New Driver Pack

Results: This was a clear win, no missing drivers or out of date drivers after applying the newly created custom driver pack during OSD.

  • HP ProDesk 600 G4 : HP-PD-600-G4
Original Driver Pack
New Driver Pack

Results: This model too give a completely updated driver pack using the new commandlet.


From my testing, I’ve learned how great this new process will be. Since it’s all powershell, automation is easy as well. I’ve already automated having it update all of my Driver Packs in CM for my HP models using this new method. The script will be available on my GitHub eventually.


8 thoughts on “HPCMSL – New-HPDriverPack”

  1. Hi Garry

    Looks great. Is there a way to download all the other driver related SW. E.g. HP Hotkey Support, HP Programmable Key using the Client Management Script Library for one particular model.


  2. Greetings

    I am struggling with the following error “Cannot validate argument on parameter ‘Os’. The argument “Win11” does not belong to the set “win7,win8,win8.1,win81,win10,*” specified by the ValidateSet attribute.” when I try to build my offline Windows 11 repository.

    I have installed hp-cmsl-1.6.5.exe. My Windows 10 offline repositries work fine. Any advice on how to troubleshoot this issue?

    Thank you

    • I believe I resolved the issue. I uninstalled hp-cmsl-1.6.5 and deleted everything HP related in C:\Program Files\WindowsPowerShell. Its now working for Windows 11 as advertised,

  3. hey gary– when i run this command i dont get the nice sp names you’re getting. i’d like to have these download with sp name and number, and sort into folders like graphics, sound, etc. Are you aware of a way to do this? i havent been able to find one.

    • Aww… yes.. the commandlet was updated to remove the “nice sp names” due to it reaching max character limits for folder structures and causing issues.
      To assist with automation processes, which typically don’t care about nice names, the process was changed to just show the SP number.

      If you wanted, you could add a step in your script that would look up the SP number (get-softpaqmetadata) and grab the info you want from that to display in your script.
      Hit me up on Twitter DM if you have any questions or want any help.

  4. Thank you for great blog. Is the task sequence with the wim->DISM steps available to download somewhere?
    Would be nice to get some of the steps.
    Thank you


Leave a Comment

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