Get Number Of Cores and Logical Processors information in SCCM


The default reporting in System Center Configuration Manager (SCCM) does not track the Number of Cores and Number of Logical Processors for each processor.The Win32_Processor WMI class contains number of cores (NumberOfCores) and logical processors (NumberOfLogicalProcessors) for each processor. It displays a unique DeviceID for each physical process in the system. This information is only available in newer version of OS's like Vista, Windows 7, Windows 2008, etc. For older version of OS like windows XP and Windows 2003 hotfix are available from Microsoft to populate this information in WMI


Windows XP SP2: http://support.microsoft.com/kb/936235
Windows 2003 SP1 or SP2: http://support.microsoft.com/kb/932370/en-us

The value for NumberOfLogicalProcessors will be higher than the value for NumberOfCores if the processor supports hyperthreading, which effectively splits a core into two logical processors. The challenge is that the reporting on Win32_Processor isn't enabled in the default sms_def.mof.

You can look at the information available in Win32_Processor WMI class using the following VB Script. 

OnErrorResumeNext
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor",,48)

Dim objItem 'as Win32_Processor
ForEach objItem in colItems
    WScript.Echo "AddressWidth: " & objItem.AddressWidth
    WScript.Echo "Architecture: " & objItem.Architecture
    WScript.Echo "Availability: " & objItem.Availability
    WScript.Echo "Caption: " & objItem.Caption
    WScript.Echo "ConfigManagerErrorCode: " & objItem.ConfigManagerErrorCode
    WScript.Echo "ConfigManagerUserConfig: " & objItem.ConfigManagerUserConfig
    WScript.Echo "CpuStatus: " & objItem.CpuStatus
    WScript.Echo "CreationClassName: " & objItem.CreationClassName
    WScript.Echo "CurrentClockSpeed: " & objItem.CurrentClockSpeed
    WScript.Echo "CurrentVoltage: " & objItem.CurrentVoltage
    WScript.Echo "DataWidth: " & objItem.DataWidth
    WScript.Echo "Description: " & objItem.Description
    WScript.Echo "DeviceID: " & objItem.DeviceID
    WScript.Echo "ErrorCleared: " & objItem.ErrorCleared
    WScript.Echo "ErrorDescription: " & objItem.ErrorDescription
    WScript.Echo "ExtClock: " & objItem.ExtClock
    WScript.Echo "Family: " & objItem.Family
    WScript.Echo "InstallDate: " & objItem.InstallDate
    WScript.Echo "L2CacheSize: " & objItem.L2CacheSize
    WScript.Echo "L2CacheSpeed: " & objItem.L2CacheSpeed
    WScript.Echo "L3CacheSize: " & objItem.L3CacheSize
    WScript.Echo "L3CacheSpeed: " & objItem.L3CacheSpeed
    WScript.Echo "LastErrorCode: " & objItem.LastErrorCode
    WScript.Echo "Level: " & objItem.Level
    WScript.Echo "LoadPercentage: " & objItem.LoadPercentage
    WScript.Echo "Manufacturer: " & objItem.Manufacturer
    WScript.Echo "MaxClockSpeed: " & objItem.MaxClockSpeed
    WScript.Echo "Name: " & objItem.Name
    WScript.Echo "NumberOfCores: " & objItem.NumberOfCores
    WScript.Echo "NumberOfLogicalProcessors: " & objItem.NumberOfLogicalProcessors
    WScript.Echo "OtherFamilyDescription: " & objItem.OtherFamilyDescription
    WScript.Echo "PNPDeviceID: " & objItem.PNPDeviceID
    WScript.Echo "PowerManagementCapabilities: " & objItem.PowerManagementCapabilities
    WScript.Echo "PowerManagementSupported: " & objItem.PowerManagementSupported
    WScript.Echo "ProcessorId: " & objItem.ProcessorId
    WScript.Echo "ProcessorType: " & objItem.ProcessorType
    WScript.Echo "Revision: " & objItem.Revision
    WScript.Echo "Role: " & objItem.Role
    WScript.Echo "SocketDesignation: " & objItem.SocketDesignation
    WScript.Echo "Status: " & objItem.Status
    WScript.Echo "StatusInfo: " & objItem.StatusInfo
    WScript.Echo "Stepping: " & objItem.Stepping
    WScript.Echo "SystemCreationClassName: " & objItem.SystemCreationClassName
    WScript.Echo "SystemName: " & objItem.SystemName
    WScript.Echo "UniqueId: " & objItem.UniqueId
    WScript.Echo "UpgradeMethod: " & objItem.UpgradeMethod
    WScript.Echo "Version: " & objItem.Version
    WScript.Echo "VoltageCaps: " & objItem.VoltageCaps
    WScript.Echo ""
Next

To enable this class reporting in SCCM, the guidelines to update sms_def.mof can be found at this MyITForum post. Aditional information about the Win32_Processors call can be found  here.

0 comments:

Post a Comment