To get started using the Operations Manager SDK, create a new project in Visual Studio, and, in your project, add references to the following Operations Manager class libraries:

The class libraries allow you to programmatically access Operations Manager data and functionality.

These assemblies are installed in the %ProgramFiles%\System Center Operations Manager 2007\SDK Binaries directory when you install Operations Manager 2007.

After you add references to the Operations Manager class libraries, create a connection to the SDK Service. The SDK Service is a Windows service that runs on the Root Management Server in a Management Group.

You can create a connection to the SDK Service by using the Connect method. This method returns a Microsoft.EnterpriseManagement.ManagementGroup object, which is the primary object for accessing most Operations Manager features and data. For more information, see How to Connect an Operations Manager SDK Client to the SDK Service.

Accessing Operations Manager Data

The Operations Manager class libraries provide classes that contain methods for accessing the data from an SDK client application. For example, to get information about the Management Packs installed in a Management Group, you can use the GetManagementPacks method. The method returns a read-only collection of Microsoft.EnterpriseManagement.Configuration.ManagementPack objects, each of which contains data about a specific Management Pack.

For more information about the Operations Manager classes, see Operations Manager 2007 SDK Reference.

The following example shows how to access Operations Manager data by using the Microsoft.EnterpriseManagement.ManagementGroup class. This example gets the alerts for all the Windows computers in the management group and displays the health state of the computer.

Visual Basic  Copy Code
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.EnterpriseManagement
Imports Microsoft.EnterpriseManagement.Configuration
Imports Microsoft.EnterpriseManagement.Monitoring
Imports System.Collections.ObjectModel
Imports System.Diagnostics
Imports System.Xml
Imports Microsoft.EnterpriseManagement.Monitoring.Security


Namespace SDKSamples
	Class Program
		Public Overloads Shared Function Main(ByVal args() As String) As Integer
			Dim windowsComputerObjects As ReadOnlyCollection(Of PartialMonitoringObject)
			Dim managementGroup As ManagementGroup
			Dim windowsComputerClass As MonitoringClass

			managementGroup = New ManagementGroup("localhost")

			windowsComputerClass = managementGroup.GetMonitoringClass(SystemMonitoringClass.WindowsComputer)

			windowsComputerObjects = managementGroup.GetPartialMonitoringObjects(windowsComputerClass)

			For Each windowsComputerObject As PartialMonitoringObject In windowsComputerObjects
				Dim alerts As ReadOnlyCollection(Of MonitoringAlert)

				alerts = windowsComputerObject.GetMonitoringAlerts()

				Console.WriteLine("{0} - State: {1} - Number of alerts: {2}", _
					windowsComputerObject.DisplayName, _
					windowsComputerObject.HealthState.ToString(), alerts.Count)

				For Each alert As MonitoringAlert In alerts
					Console.WriteLine("{0}", alert.Name)
				Next alert
			Next windowsComputerObject

		End Function 'Main

	End Class 'Program
End Namespace 'SDKSamples
C#  Copy Code
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.EnterpriseManagement;
using Microsoft.EnterpriseManagement.Configuration;
using Microsoft.EnterpriseManagement.Monitoring;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Xml;
using Microsoft.EnterpriseManagement.Monitoring.Security;

namespace SDKSamples
{
	class Program
	{
		static void Main(string[] args)
		{
			ReadOnlyCollection<PartialMonitoringObject> windowsComputerObjects;
			ManagementGroup managementGroup;
			MonitoringClass windowsComputerClass;

			managementGroup = new ManagementGroup("localhost");

			windowsComputerClass = managementGroup.GetMonitoringClass(SystemMonitoringClass.WindowsComputer);

			windowsComputerObjects = managementGroup.GetPartialMonitoringObjects(windowsComputerClass);

			foreach (PartialMonitoringObject windowsComputerObject in windowsComputerObjects)
			{
				ReadOnlyCollection<MonitoringAlert> alerts;

				alerts = windowsComputerObject.GetMonitoringAlerts();

				Console.WriteLine("{0} - State: {1} - Number of alerts: {2}",
								windowsComputerObject.DisplayName,
								windowsComputerObject.HealthState.ToString(),
								alerts.Count);

				foreach (MonitoringAlert alert in alerts)
				{
					Console.WriteLine("{0}", alert.Name);
			}
		}
	}
}
}

Additional Information

See Also


Send comments about this topic to Microsoft.