How to Get the Unique Identifier Value for a Client
Applies To: System Center Configuration Manager 2007, System Center Configuration Manager 2007 R2, System Center Configuration Manager 2007 R3, System Center Configuration Manager 2007 SP1, System Center Configuration Manager 2007 SP2
When you discover system resource data for a client, in Microsoft System Center Configuration Manager 2007, you must specify the client's unique identifier value in the data discovery record (DDR), such as:
DDRAddString("SMS Unique Identifier",
"GUID:12345678-1234-1234-1234-123456789012", 64,
ADDPROP_GUID | ADDPROP_KEY);
The client's unique identifier can be found in Windows Management Instrumentation (WMI) at:
root\ccm:CCM_Client=@:ClientId
Procedures
To identify the client's unique identifier in WMI
Connect to the CCM namespace (root\ccm).
Load the CCM_Client class.
Enumerate through the objects in the CCM_Client class and display the unique identifier (ClientId).
Example
Description
The following example method shows how obtain the client's unique identifier from WMI by connecting to the CCM namespace, loading the CCM_Client class and getting the ClientId property.
Important
The following C# example requires the System.Management namespace.
For information about calling the sample code, see How to Call a Configuration Manager Object Class Method by Using WMI
Code
Sub GetClientUniqueID()
' Get a connection to the root\ccm namespace on the local system.
Set objWMIService = GetObject("winmgmts:\\.\root\ccm")
' Get all objects in the CCM_Client class.
set allCCMClientObjects = objWMIService.ExecQuery("Select * from CCM_Client")
' Loop through the available objects (only one) and display ClientId value.
For Each eachCCMClientObject in allCCMClientObjects
wscript.echo "ClientId (GUID): " & eachCCMClientObject.ClientId
Next
End Sub
public void GetClientUniqueID()
{
try
{
// Define the scope (namespace) to connect to.
ManagementScope inventoryAgentScope = new ManagementScope(@"root\ccm");
// Load the class to work with (CCM_Client).
ManagementClass inventoryClass = new ManagementClass(inventoryAgentScope.Path.Path, "CCM_Client", null);
// Query the class for the objects (create query, create searcher object, execute query).
ObjectQuery query = new ObjectQuery("SELECT * FROM CCM_Client");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(inventoryAgentScope, query);
ManagementObjectCollection queryResults = searcher.Get();
// Loop through the available objects (only one) and display the ClientId value.
foreach (ManagementObject result in queryResults)
{
Console.WriteLine("ClientId (GUID): " + result["ClientId"]);
}
}
catch (System.Management.ManagementException ex)
{
Console.WriteLine("Failed to get client ID (GUID). Error: " + ex.Message);
throw;
}
}
Comments
Compiling the Code
This C# example requires:
Namespaces
System.Management
Robust Programming
For more information about error handling, see About Configuration Manager Errors.
Security
For more information about securing Configuration Manager applications, see Securing Configuration Manager Applications.
See Also
Concepts
System Center Configuration Manager Software Development Kit
Configuration Manager Discovery
How to Call a WMI Class Method by Using System.Management