Creating queries, collections and reports for Window Server 2008 Core in System Center Configuration Manager 2007

Creating queries, collections and reports for Window Server 2008 Core in System Center Configuration Manager 2007

  • Comments 2
  • Likes

imageHi folks, my name is Sanman Parvalkar and I’d like to share some information regarding the creation of queries, collections and reports for Window Server 2008 Core in System Center Configuration Manager 2007.

System Center Configuration Manager 2007 SP2 allows client installation on Windows Server 2008 Core systems* but it does not differentiate between Windows Server 2008 and Windows Server 2008 Core machines in either queries, collections or reports.

* Configuration Manager 2007 SP2 Supported Configurations:

To determine which SKU a particular machine is running, you can use the following command:

wmic OS get OperatingSystemSKU

SKUs for Windows Server 2008:

  • 12 = Windows Server 2008 Datacenter Edition (core)
  • 13 = Windows Server 2008 Standard Edition (core)
  • 14 = Windows Server 2008 Enterprise Edition (core)
  • 40 = Windows Server 2008 Standard Edition without Hyper-V (core)


This field is only present on Windows Vista / Server 2008 upwards.  Running the command above on a Windows XP or Windows Server 2003 computer will result in the following error:

Node - Machine1
Code = 0x80041017
Description = Invalid query
Facility = WMI

NOTE The table and field in SQL are:

Column - OperatingSystemSKU0

In WMI it is:



Property - OperatingSystemSKU

The first step is to modify the sms_def.mof by adding a section in Hardware Inventory to collect the version information from the clients within their WMI repository.  Modify the mof file at \<SCCM Server Install Folder>\inboxes\clifiles.scr\hinv\ sms_def.mof to include the following:

[ SMS_Report     (TRUE),
  SMS_Group_Name ("Operating System"),
add >
    [SMS_Report (TRUE)     ]
        uint32     OperatingSystemSKU;

Once complete, you can do the following to speed up the process of the client reporting this information back to Configuration Manager.

- On the ConfigMgr console: Modify the hardware inventory agent to run at quicker interval.

- On the client: Trigger a 'hardware inventory cycle' on the client via the Configuration Manager applet in Control Panel

To verify that the collection took place, open the ConfigMgr admin console and navigate to Computer Management > Collections and right click on the client machine.  Click Start and then Resource Explorer > Hardware and click on Operating System.  A new column named  'OperatingSystemSKU' should appear.

Creating a WQL Query

Once the OS information is being collected, you can use the query below to search for all Windows Server 2008 Core or Windows Server 2008 R2 Core systems only. To query for just Windows Server 2008 you can change %Server 6.% to %Server 6.0% or for Windows Server 2008 R2 you can change it to %Server 6.1%.

select SMS_R_System.Name, SMS_R_System.SMSAssignedSites, SMS_R_System.IPAddresses, SMS_R_System.IPSubnets, SMS_R_System.OperatingSystemNameandVersion, SMS_R_System.ResourceDomainORWorkgroup, SMS_R_System.LastLogonUserDomain, SMS_R_System.LastLogonUserName, SMS_R_System.SMSUniqueIdentifier, SMS_R_System.ResourceId, SMS_R_System.NetbiosName from  SMS_R_System join  SMS_G_System_OPERATING_SYSTEM on SMS_R_System.ResourceID=SMS_G_System_OPERATING_SYSTEM.ResourceID where SMS_R_System.OperatingSystemNameandVersion like "%Server 6.%"
and SMS_G_System_OPERATING_SYSTEM.OperatingSystemSKU IN (12,13,14,40)


Creating a Collection

A new Collection can be created by importing the WQL Query Statement we used above.


Creating a Report

The SQL statement below will search for all unique Windows Server 2008 or Windows Server 2008 R2 machines:

select distinct v_R_System.Name0 as 'Machine Name', v_HS_OPERATING_SYSTEM.caption0 as 'OS Type', CSDVersion0 as 'Service Pack Level', case v_HS_OPERATING_SYSTEM.OperatingSystemSKU0 when 12 then 'Yes' when 13 then 'Yes' when 14 then 'Yes' when 40 then 'Yes' else 'No' end as 'Windows Core' from v_R_System join v_HS_OPERATING_SYSTEM on v_R_System.resourceID = v_HS_OPERATING_SYSTEM.resourceID where v_HS_OPERATING_SYSTEM.OperatingSystemSKU0 is not null

The SQL statement above  will exclude all machines that have NULL in the SKU field and display a column indicating if the machine is Core or not.

Sanman Parvalkar | System Center Support Engineer

Get the latest System Center news on Facebook and Twitter:

clip_image001 clip_image002

App-V Team blog:
ConfigMgr Support Team blog:
DPM Team blog:
MED-V Team blog:
Orchestrator Support Team blog:
Operations Manager Team blog:
SCVMM Team blog:
Server App-V Team blog:
Service Manager Team blog:
System Center Essentials Team blog:
WSUS Support Team blog:

The Forefront Server Protection blog:
The Forefront Endpoint Security blog :
The Forefront Identity Manager blog :
The Forefront TMG blog:
The Forefront UAG blog:

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment
  • I am facing difficulties to get the information on windows 2012 core machine.

    Can you help me with instructions, and expected output for core machine ?

  • Windows Server 2012 is Server 6.2 use this for WQL

    for reports - run 'wmic OS get OperatingSystemSKU' to get the SKU version - eg : Windows 8 PRO is 48