This topic provides step-by-step instructions for enumerating the instances of a specified CIM class using the Windows Management Infrastructure (MI) .NET API. In addition to the steps, a full source code example is provided at the end of the topic.
Note
To see the native MI API and Microsoft Visual C++ version of this topic, refer to How to: Enumerate All Instances of a Class (C/C++)
Step-by-step Instructions
- Add a reference to the Microsoft.Management.Infrastructure reference assembly. (This assembly ships as part of the Windows Software Development Kit (SDK) for Windows 8.) 
- Add a using statement for the Microsoft.Management.Infrastructure namespace. - using Microsoft.Management.Infrastructure;
- Instantiate a CimSession object. The following snippet uses the standard "localhost" value for the CimSession.Create method. - CimSession cimSession = CimSession.Create("localhost");
- Call the CimSession.EnumerateInstances method passing the desired CIM namespace and class whose instances you want to enumerate. The following snippet enumerates the instances of the Win32_Process class. (You'll need to add a using statement for the System.Collections.Generic namespace so that the compiler can locate the IEnumerable type information.) - IEnumerable<CimInstance> enumeratedInstances = cimSession.EnumerateInstances(@"root\cimv2", "Win32_Process");
- Loop through the returned CimInstance objects. - foreach (CimInstance cimInstance in enumeratedInstances) { /* access desired CimInstance members */ }
Example
The following code sample enumerates all instances of the Win32_Process class (which represents active processes) on the local machine, and prints the name of each process.
Note
In a real application you would define as parameters the computer name ("localhost"), CIM namespace ("root\cimv2"), and class name ("Win32_Process"). For purposes of simplicity, these have been hardcoded in this example.
using System;
using System.Collections.Generic;
using Microsoft.Management.Infrastructure;
public partial class MI
{
    public static void EnumerateInstances()
    {
        try
        {
            CimSession cimSession = CimSession.Create("localhost");
            IEnumerable<CimInstance> enumeratedInstances = 
                cimSession.EnumerateInstances(@"root\cimv2", "Win32_Process");
            foreach (CimInstance cimInstance in enumeratedInstances)
            {
                Console.WriteLine("{0}", cimInstance.CimInstanceProperties["Name"].Value.ToString());
            }
        }
        catch (CimException ex) 
        { 
            // Handle the exception as appropriate.
            // This example prints the message.
            Console.WriteLine(ex.Message); 
        }
    }
}