Hi Guys ,
I am back with another exciting piece of information . I had a requirement recently where we wanted to get the serial numbers of hard drives . Now there is not much information available online for this requirement, so i did some research and finally found a way.
Now by default SCCM does not collect the serial numbers of the hard drives installed in Laptops or desktops.
We need to modify the Hardware inventory to accomplish the task. Please follow along for detailed information on how to get the job done 🙂
Steps:
- Login to the CAS server or your Primary site as these changes can only be done from CAS . If you are using a test environment then you have to login at the Top of the hierarchy class. Also keep in mind the changes can only be done to the default client settings .
- Create a SMS_DEF.MOF file and copy the contents given below:
[ SMS_Report (TRUE),
SMS_Group_Name ("Physical Disk"),
SMS_Class_ID ("MICROSOFT|PHYSICALDISK|1.0"),
Namespace ("\\\\\\\\.\\\\root\\\\microsoft\\\\windows\\\\storage") ]
class PhysicalDisk : SMS_Class_Template
{
[ SMS_Report (FALSE) ]
UInt64 AllocatedSize;
[ SMS_Report (TRUE) ]
UInt16 BusType;
[ SMS_Report (FALSE) ]
UInt16 CannotPoolReason[];
[ SMS_Report (FALSE) ]
Boolean CanPool;
[ SMS_Report (FALSE) ]
String Description;
[ SMS_Report (FALSE) ]
String DeviceId;
[ SMS_Report (FALSE) ]
UInt16 EnclosureNumber;
[ SMS_Report (TRUE) ]
String FirmwareVersion;
[ SMS_Report (TRUE) ]
String FriendlyName;
[ SMS_Report (TRUE) ]
UInt16 HealthStatus;
[ SMS_Report (FALSE) ]
Boolean IsIndicationEnabled;
[ SMS_Report (FALSE) ]
Boolean IsPartial;
[ SMS_Report (TRUE) ]
UInt64 LogicalSectorSize;
[ SMS_Report (TRUE) ]
String Manufacturer;
[ SMS_Report (TRUE) ]
UInt16 MediaType;
[ SMS_Report (TRUE) ]
String Model;
[ SMS_Report (TRUE) ]
String ObjectId;
[ SMS_Report (FALSE) ]
UInt16 OperationalStatus[];
[ SMS_Report (FALSE) ]
String OtherCannotPoolReasonDescription;
[ SMS_Report (FALSE) ]
String PartNumber;
[ SMS_Report (FALSE) ]
String PhysicalLocation;
[ SMS_Report (TRUE) ]
UInt64 PhysicalSectorSize;
[ SMS_Report (TRUE) ]
String SerialNumber;
[ SMS_Report (TRUE) ]
UInt64 Size;
[ SMS_Report (FALSE) ]
UInt16 SlotNumber;
[ SMS_Report (FALSE) ]
String SoftwareVersion;
[ SMS_Report (TRUE) ]
UInt32 SpindleSpeed;
[ SMS_Report (FALSE) ]
UInt16 SupportedUsages[];
[ SMS_Report (TRUE) ]
String UniqueId;
[ SMS_Report (TRUE) ]
UInt16 Usage;
};
- Once the contents are copied please save the file on the SCCM server as we will be using the file shortly.
- Now proceed to the client settings under administrator node and open Hardware inventory settings and click on Set classes as given below.

- Then click on the import button as given in the screenshot:

- Now you to select the file we saved on the SCCM server:

- After you import the file you will get the following summary :

- Once the file is imported successfully you can then get the reports as desired and you can customize the amount of information you need by selecting the check boxes.

I hope this helps you in getting the desired information .If you have any doubts please feel to contact me .
The article is good but could you please explain how to extract the report after doing this procedure above?
LikeLike
I agree with the comment above, it is a great article/tutorial on how to add this option but how do you create a report to see them?
LikeLike