Ok, so if I still worked at Big Bank, I'd never do this, plus if I tried, a couple of coworkers would be very upset with me. We'd instead create a Baseline which would set things, or report on non-compliant settings. However, in my lab, or a small environment, which has lots of storage for SQL, this is pretty handy. This Testing was done with 4 HP Devices Reporting into Inventory
TLDR: SQL Query Samples on GitHub
Reference for Setting up: How to Inventory HP BIOS and UEFI Settings with ConfigMgr | Mike's Tech Blog (miketerrill.net) - Mike brings up a good point I forgot. being selective on the inventory to decrease the amount of data in the database. I do not cover that in this post.
Goal: Inventory all HP BIOS Settings for reporting purposes
I've been working with Sure Recover and WiFi BIOS Settings a lot lately, and in my own lab, it is nice to quickly see which device have specific abilities.
- Which devices support Sure Recover
- Which devices are enabled to support Sure Recover over WiFi
- Which devices have custom Sure Recover settings
- Which devices have Sure Recover eMMC chips
- Which devices have TPM disabled, etc
Process: Extending Hardware Inventory via ConfigMgr
Now if you're a CM admin, this should already be quite familiar for you, but if not, here are a couple things you should catch up on:
- Hardware inventory - Configuration Manager | Microsoft Learn
- Extend hardware inventory - Configuration Manager | Microsoft Learn
We're going to start by going into the Default Client Settings -> Hardware Inventory -> Set Classes
Then click "Add", which will open up the "Add Hardware Inventory Class", then connect to one of your HP Devices.
WMI Namespace = root\HP\InstrumentedBIOS
You'll want to find these two Classes: HPBIOS_BIOSEnumeration & HPBIOS_BIOSString
Click OK, and back in the Hardware Inventory Classes, find and uncheck the two Classes, as we don't want them included in your Default Settings client, but a custom HP client settings that we'll create.
Go ahead and create a new Client Settings that we'll dedicate to HP Devices. I've named mine "HP Devices - BIO Settings", but do what makes sense for your environment.
I'm only using it for inventory, so I've checked the box for Hardware Inventory, then I go into Set Classes, and check the boxes for the HPBIOS_
I have it deployed to my HP Workstation Collection
My HP Collection Query:
After you've started to collect data, you'll see some extra tables show up. You'll end up using the v_GS_HPBIOS_BIOSENUMERATION & v_GS_HPBIOS_BIOSSTRING views to get the information you want. So far, I've collected data on four devices, and it hasn't impacted the size of the database much per device. But still, you have 200K devices, it's a bit of storage.
Ok, so I'm not a huge SQL person, but I can typically get what I want with some googling and messing around. I came up with this as there are settings in each view that I want to place into a single report. By Creating a Temp table and merging the information, I can get what I want.
This report shows the specific settings for a specific device, these are the main settings I wanted to report on for a project I'm doing. But you can easily add or remove any settings from that list or remove the "where SYS.Netbios_Name0 = 'ComputerName' and have it provide a list of settings values for all of the devices.
This next query I use to track down devices that have a specific setting set to a specific value. In this case, I'm tracking down devices that have AMT enabled, so I can then determine why my baseline to set it to disable isn't working.
This last example I wrote to pull back WiFi Profiles in the BIOS (on HP Devices, when you Press F3 on boot and setup a WiFi profile to allow BIOS level connection to WiFi connections. I wanted to ensure that my ConfigMgr configuration items were properly setting up the BIOS WiFi Profiles.
I'll be posting these and more SQL Queries in my GitHub that you can grab.
I hope from this post you found the value and method to inventory your HP BIOS.