Hardware inventory – Add firmware property to WMI class Win32_Diskdrive in ConfigMgr

There was a question on the Tech konnect facebook group the other day if there was any way of collecting disk name and firmware version from your clients in ConfigMgr.

Yes you can do this with the help of Hardware inventory and the Win32_DiskDrive WMI Class and use the following properties Caption and Firmware Revision but the thing is that the property Firmware Revision isn’t available by default so we need to add this
to the Win32_DiskDrive class in ConfigMgr Hardware inventory and i’m going to show you how to do this with the help of Powershell.

Getting started

First of all lets have a look on a Win10 client pc just to show of the information we want to gather. Caption is a good way of finding out the name and model of the disk tho different manufactures has there own way of naming things and then Firmware Revision to find out what firmware its running.

Get-WmiObject -Class Win32_DiskDrive | Format-List -Property Caption, Firmwarerevision

If we turn to ConfigMgr and Hardware Inventory classes Administration – Client Settings – <Your Client Setting> – Properties – Hardware Inventory – Set Classes

We can see that under the Win32_DiskDrive class we already have Caption but there’s no Firmware Revision property to be found.

Adding Firmware Revision to the Win32_DiskDrive class in ConfigMgr

We are going to this with the help of Powershell and here’s the script

Note: Make sure to modify the $Namespace variable so that the Site_Code is correct for your environment

#Modify Namespace to your correct Site ID
$Namespace = "root\SMS\site_TS1"

$Win32_DiskDrive = (Get-WmiObject -Namespace $Namespace -Class SMS_InventoryClass -ComputerName localhost | Where-Object {$_.ClassName -like "Win32_DiskDrive"})
$Classprop = [wmiclass]"$($Namespace):SMS_InventoryClassProperty"

$Prop = $Classprop.CreateInstance()
$Prop.PropertyName = 'FirmwareRevision'
$Prop.IsKey = $false
$Prop.Type = 8
$Win32_DiskDrive.Properties += [System.Management.ManagementObject]$Prop

Run the script on your ConfigMgr Siteserver

Go back to ConfigMgr and Administration – Client Settings – <Your Client Setting> – Properties – Hardware Inventory – Set Classes

and under Win32_DiskDrive you will now find “FirmwareRevision” and lets mark that checkbox and press “ok”

 Now you need to wait for the next Hardware inventory data to get back in to ConfigMgr and onces thats done you can go to “Assets and Compliance – Devices – <Right click on a Client> – Start – Resource Explorer”

 And from here go to “Hardware – Disk Drives” and double click on the row to the right which indicates the different disk and you will get a list of all properties and there you also have Firmware Revision

Now when you have the data in ConfigMgr  you can make a report out of it or build collections and so on.

Post any question below or hit me up on twitter.

Until next time, cheers !

You can find me over at

[twitter-follow screen_name=’Timmyitdotcom’]


  1. Modifying default things like this is often/usually asking for trouble particularly during upgrades where the upgrade process has been known to choke when it finds something unexpectedly modified on a default object. It would be much better IMO to simply add a new class. I won’t say it will cause an issue because I certainly don’t know that, but as noted, failures have happened before with changes like this.

    1. One should definitely be careful when doing stuff like this, input the wrong data could more then likely mess things up. I will do some testing regarding upgrades and see what happens, its not something I’ve tested before. As always, your input is much appreciated Jason!

  2. I have to agree with Jason on this one, I have personally seen bad things happen when you extend the default classes. As such you should always create a new class with the least number of attributes possible but make sure that yo have the key attributes.

    1. Oh interesting, even when importing a new class with the built in function ? Would love to hear what you have seen.

      1. If you import a new class you will never have problem, it is only when you update existing default ConfigMgr classes that you will have problem.

        The short answer is, it was simpler for me to rebuild the lab than to fix the problem. In order to fix the problem I would have had to edit table, view, store procedures, etc.. All of which is not supported by MS.

        Out of habit if there is any doubt, I always create a new class, it only take a few minutes to do so and it save me the headache of not having to worry about what MS will change it the future.

Leave a Reply