When we decided to inventory the  information in SCCM, we found that we had no issue inventorying the BIOS. For further information refer to: https://www.vikrambedi.com/gathering-bios-version-sccm/
When it came to the driver report on how we are doing with versions, we found that all the required information is not available out of the box in SCCM, so it takes some setup.

Inventoring the Win32_PnpSignedDriver WMI class

The first question you may ask is why not inventory the Win32_Pnpsigneddriver WMI class and you will soon realize that the data will not load to the Hardware Inventory class once you import it. Some learnings from are:

Powershell script:

Deploying the Powershell Script

The script can be deployed via couple of routes in SCCM:

  1. Script
  2. Package

The script is handy for a first time push so that you are able to get it to run on most machines quickly but than I would recommend you setup the package to rerun repeatedly on a cadence of choice(I prefer daily). This will allow the WMI to update the device class daily and than collect the data based on the hardware inventory collection

Once the script has been deployed and run on a few machines, just connect to WMI and you can add the new Win32_PnpSignedDriver_Custom class to your SCCM hardware inventory.

Reporting on driver versions

Once you have the data in your inventory, you just need to report on it.

The SQL view v_gs_pnp_signed_driver_custom gets created from your hardware inventory and contains all the raw data. Here are a few sample SQL queries: