How to extend hardware inventory information to include physical memory location?

In certain cases, beside the total amount of physical memory information, it is useful knowing the actual physical memory bank distribution across hardware memory slots. This is especially true when memory upgrade must be considered within the company in order to meet requirements imposed by the new version of client operating system.

By default, this is not included in Configuration Manager hardware inventory which therefore must be extended by editing sms_def.mof file. The Win32_PhysicalMemory WMI class represents a physical memory device located on a computer system and available to the operating system. To include Win32_PhysicalMemory WMI class in the scope of hardware inventory, the following lines should be added to the sms_def.mof file:

//* Physical memory location inventory.

[ SMS_Report(TRUE),
SMS_Group_Name("Physical Memory Location"),
SMS_Class_ID("Microsoft|PHYSICAL_MEMORY_LOCATION|1.0") ]
Class Win32_PhysicalMemory: SMS_Class_Template
{
[key, SMS_Report(TRUE)]
uint64 Capacity;
[key, SMS_Report(TRUE)]
string Description;
[key, SMS_Report(TRUE)]
string DeviceLocator;
[key, SMS_Report(TRUE)]
string Manufacturer;
[key, SMS_Report(TRUE)]
uint16 MemoryType;
[key, SMS_Report(TRUE)]
string PartNumber;
[key, SMS_Report(TRUE)]
string SerialNumber;
[key, SMS_Report(TRUE)]
uint32 PositionInRow;
[key, SMS_Report(TRUE)]
uint32 Speed;
};

In this example Capacity, Description, DeviceLocator, Manufacturer, MemoryType, PartNumber, SerialNumber, PositionInRow and Speed properties of the Win32_PhysicalMemory WMI class will be queried and included in hardware inventory.
For a list of all available properties, you may refer to MSDN: Win32_PhysicalMemory Classhttp://msdn.microsoft.com/en-us/library/aa394347(v=vs.85).aspx

Once this is done and first managed devices run hardware inventory based on extended sms_def.mof file, you can then create custom Configuration Manager report to display collected information. For a custom Configuration Manager report, the following query can be used:

SELECT
v_GS_SYSTEM.Name0 AS 'Computer Name',
Capacity0/1048576 AS 'Capacity (MB)',
Description0 AS 'Description',
DeviceLocator0 AS 'Device Locator',
Manufacturer0 AS 'Manufacturer',
PartNumber0 AS 'Part Number',
SerialNumber0 AS 'Serial Number',
MemoryType0 AS 'Memory Type',
PositionInRow0 AS 'Position In Row',
Speed0 AS 'Speed (ns)'
FROM
v_GS_PHYSICAL_MEMORY_LOCATION
JOIN
v_GS_SYSTEM ON v_GS_SYSTEM.ResourceID = v_GS_PHYSICAL_MEMORY_LOCATION.ResourceID
ORDER BY v_GS_SYSTEM.Name0

Advertisements
How to extend hardware inventory information to include physical memory location?

2 thoughts on “How to extend hardware inventory information to include physical memory location?

  1. Hello,

    I`m using a SCCM 2012 R2 environment and I run your report, but with one difference, instead of “v_GS_PHYSICAL_MEMORY_LOCATION” I use “v_GS_PHYSICAL_MEMORY”.

    After that the report works great, but the “Capacity(MB)” column show only 0 (zero). Do you have any idea why ?

    Thank you.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s