cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Summary

SCCM 2007 does not report back information about Number of Cores.

Symptoms

The SCCM2007 does not report back information about Number of Cores (NumberOfCores). Therefore, no information about number of cores can be imported into FNMP.
The number of cores data is important for core-based licenses -- such that of Microsoft Server licenses. Make sure the following changes are applied on production environment, and on any PoC.

Cause

The NumberOfCores data is part of Win32_Processor WMI class. However, in SCCM 2007, the reporting of Processor data is NOT retrieved from Win32_Processor class, but instead retrieved from SMS_Processor. The SMS_Processor class does not include the NumberOfCores data.

Resolution

To work around this issue, the SCCM 2007 can be custom configured so that NumberOfCores data is gathered by inventory clients and reported back in to SCCM.
Once the NumberOfCores data is available in SCCM 2007 database, the FNMP?s connector for SCCM needs to be patch to make it read the new NumberOfCores data from SCCM.
Follow these steps:
1. Add a new custom data class entry into configuration.mof file. On SCCM 2007, open the configuration.mof file in a notepad. The default location of the file is ?C:\Program Files\Microsoft Configuration Manager\inboxes\clifiles.src\hinv?.
Copy the following text and paste it at the bottom of the configuration.mof.
//----------------------------------------------------------------
// Flexera Data Class
//----------------------------------------------------------------
#pragma namespace("\\\\.\\root\\cimv2")

[Union,ViewSources{"select DeviceID,Name,NumberOfCores,NumberOfLogicalProcessors from Win32_Processor"},ViewSpaces{"\\\\.\\root\\cimv2"},
dynamic,Provider("MS_VIEW_INSTANCE_PROVIDER")]
class FNMP_Processor
{
[PropertySources{"DeviceID"},key]
string DeviceID;
[PropertySources{"Name"}]
string Name;
[PropertySources{"NumberOfCores"}]
uint32 NumberOfCores;
[PropertySources{"NumberOfLogicalProcessors"}]
uint32 NumberOfLogicalProcessors;
};
2. Add a new custom reporting class entry into sms_def.mof file. On SCCM 2007, open the sms_def.mof file in a notepad. The default location of the file is ?C:\Program Files\Microsoft Configuration Manager\inboxes\clifiles.src\hinv?.
Copy the following text and paste it at the bottom of the sms_def.mof.
//----------------------------------------------------------------
// Flexera Reporting Class
//----------------------------------------------------------------

// Extends Processor data
// Exposes the NumberOfCores and NumberOfLogicalProcessors.

[ SMS_Report (TRUE),
SMS_Group_Name ("FNMP_Processor"),
SMS_Class_ID ("CUSTOM|FNMP_Processor|1.0") ]
class FNMP_Processor : SMS_Class_Template
{
[SMS_Report (TRUE),key]
string DeviceID;
[SMS_Report (TRUE)]
string Name;
[SMS_Report (TRUE) ]
uint32 NumberOfCores;
[SMS_Report (TRUE) ]
uint32 NumberOfLogicalProcessors;
};
This custom reporting class is configured to report additional processor data such as NumberOfCores and NumberOfLogicalProcessors, in addition to processor?s name.

For more information on how to extending hardware inventory in SCCM:
  1. SCCM 2007 ? How to Extend Hardware Inventory
  2. SCCM 2003 ? Configuring Hardware Inventory Rules
3. Modify SCCM connector in FNMP. Open the file ?Computer.xml? in a notepad. The file?s default location is ?C:\Program Files\ManageSoft\Compliance\ImportProcedures\Inventory\Reader\SMS?.
NOTE: You only have to do this step for FNMP prior 9.0 version.
Search for the section named "ReadProcessorSpeed", and replace its content (only the content of that section) so that the final outcome would be just like so:
<Reader xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
Name="ReadProcessorSpeed"
....>
<![CDATA[
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'v_GS_FNMP_Processor0' AND COLUMN_NAME = 'NumberOfCores0')
BEGIN
--Runs when SCCM client was custom configured (sms_def.mof) to return number of cores from Processor_Ext custom WMI class.
EXECUTE ('
SELECT p.MachineID AS MachineID,
p.MaxClockSpeed0 AS MaxClockSpeed,
LTRIM(RTRIM(p.Name0)) AS ProcessorType,
ISNULL(pe.NumberOfCores0,0) AS NumberOfCores
FROM dbo.Processor_DATA AS p
LEFT JOIN dbo.v_GS_FNMP_Processor0 pe ON pe.ResourceID = p.MachineID AND pe.DeviceID0 = p.DeviceID0')
END
ELSE IF EXISTS (SELECT 'x' FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Processor_DATA' AND COLUMN_NAME = 'NumberOfCores00')
BEGIN
EXECUTE ('
SELECT p.MachineID AS MachineID,
p.MaxClockSpeed0 AS MaxClockSpeed,
LTRIM(RTRIM(p.Name0)) AS ProcessorType,
p.NumberOfCores00 AS NumberOfCores
FROM dbo.Processor_DATA AS p')
END
ELSE
BEGIN
EXECUTE ('
SELECT p.MachineID AS MachineID,
p.MaxClockSpeed0 AS MaxClockSpeed,
LTRIM(RTRIM(p.Name0)) AS ProcessorType,
NULL AS NumberOfCores
FROM dbo.Processor_DATA AS p')
END
]]>
</Reader>
In addition, for devices that don?t report NumberOfCores in SCCM, we need to have their NumberOfCores set to zero. On the same file, search for the section named ?PopulateComputerResults?, and within it change the line:
From: ic.NumberOfCores = ISNULL(pin.NumberOfCores, 1),
To: ic.NumberOfCores = ISNULL(pin.NumberOfCores, 0),
4. The mof file may need to be compiled (SMS 2003) on clients machines by deploying a package that runs a mofcomp.exe. This topic, however, is not covered in this article.
5. Apply the Windows OS patches if applicable. See ?Additional Information? section below.
On the next inventory cycle, the new custom processor data should be available in SCCM database. To verify the returned data of the custom class, execute the following script:
SELECT ResourceID, NumberOfCores0
FROM dbo.v_GS_FNMP_Processor0

Additional Information

There are known issues in Windows 2003 server and Windows XP whereby the NumberOfCores and NumberOfLogicalProcessors data are not accurately reported. The following KB links provide the solutions:
  1. Windows Server 2003: KB 932370
  2. Windows XP: KB 936235
The same principle may be applied on SCCM 2003
This KB article applies to FNMP 8.6 and earlier vesions.
Was this article helpful? Yes No
No ratings
Version history
Last update:
‎May 17, 2012 07:58 PM
Updated by: