You can use the Operations Manager class libraries to gather information about an existing Management Pack. For a list of Management Pack properties, see Microsoft.EnterpriseManagement.Configuration.ManagementPack and Microsoft.EnterpriseManagement.Configuration.ManagementPackClass.

Example

Description

The following example demonstrates how to retrieve information from two different Management Packs. The example displays information about the classes, relationships, monitors, rules, and tasks in the Management Packs.

Code

Visual Basic  Copy Code
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.VisualBasic
Imports Microsoft.EnterpriseManagement
Imports Microsoft.EnterpriseManagement.Configuration
Imports Microsoft.EnterpriseManagement.Configuration.IO

Namespace SDKSamples
	Class Program
		Public Overloads Shared Function Main(ByVal args() As String) As Integer

			Dim libraryMp As ManagementPack
			Dim sqlMp As ManagementPack
			Dim classes As ManagementPackElementCollection(Of ManagementPackClass)
			Dim relationships As ManagementPackElementCollection(Of ManagementPackRelationship)
			Dim tasks As ManagementPackElementCollection(Of ManagementPackTask)
			Dim monitors As ManagementPackElementCollection(Of ManagementPackMonitor)
			Dim rules As ManagementPackElementCollection(Of ManagementPackRule)

			libraryMp = New ManagementPack("c:\ManagementPacks\System.Library.xml")
			sqlMp = New ManagementPack("c:\ManagementPacks\Microsoft.SQLServer.2005.Monitoring.xml")
			classes = libraryMp.GetClasses()
			relationships = libraryMp.GetRelationships()
			monitors = sqlMp.GetMonitors()
			rules = sqlMp.GetRules()
			tasks = sqlMp.GetTasks()

			Console.WriteLine("Classes")

			For Each mpClass As ManagementPackClass In classes

				Console.WriteLine(ControlChars.Lf + ControlChars.Tab + _
								"Name: {0}", mpClass.DisplayName)

				Console.WriteLine(ControlChars.Tab + "Properties")

				For Each prop As ManagementPackClassProperty In mpClass.PropertyCollection

					Console.WriteLine(ControlChars.Tab + ControlChars.Tab + "Name: {0}", prop.Name)
				Next
			Next

			Console.WriteLine(ControlChars.Lf + "Relationships")

			For Each relationship As ManagementPackRelationship In relationships

				Console.WriteLine(ControlChars.Tab + "Name: {0}", relationship.DisplayName)
				Console.WriteLine(ControlChars.Tab + ControlChars.Tab + "Source: {0}", relationship.Source.Name)
				Console.WriteLine(ControlChars.Tab + ControlChars.Tab + "Target: {0}", relationship.Target.Name)
			Next

			Console.WriteLine(ControlChars.Lf + "Monitors")

			For Each monitor As ManagementPackMonitor In monitors

				Console.WriteLine(ControlChars.Lf + ControlChars.Tab + _
								"Name: {0}", monitor.DisplayName)
				Console.WriteLine(ControlChars.Tab + "Target: {0}", monitor.Target.Name)
				Console.WriteLine(ControlChars.Tab + "Enabled: {0}", monitor.Enabled)
			Next

			Console.WriteLine(ControlChars.Lf + "Rules")

			For Each rule As ManagementPackRule In rules

				Console.WriteLine(ControlChars.Lf + ControlChars.Tab + _
								"Name: {0}", rule.DisplayName)
				Console.WriteLine(ControlChars.Tab + "Target: {0}", rule.Target.Name)
				Console.WriteLine(ControlChars.Tab + "Enabled: {0}", rule.Enabled)
			Next

			Console.WriteLine(ControlChars.Lf + "Tasks")

			For Each task As ManagementPackTask In tasks

				Console.WriteLine(ControlChars.Lf + ControlChars.Tab + _
								"Name: {0}", task.DisplayName)
				Console.WriteLine(ControlChars.Tab + "Target: {0}", task.Target.Name)
				Console.WriteLine(ControlChars.Tab + "Enabled: {0}", task.Enabled)
			Next
		End Function
	End Class
End Namespace
C#  Copy Code
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.EnterpriseManagement.Configuration;
using Microsoft.EnterpriseManagement.Configuration.IO;

namespace SDKSamples
{
	class Program
	{
		static void Main(string[] args)
		{
			ManagementPack											libraryMp;
			ManagementPack											sqlMp;
			ManagementPackElementCollection<ManagementPackClass> 	classes;
			ManagementPackElementCollection<ManagementPackRelationship> relationships;
			ManagementPackElementCollection<ManagementPackTask> 	 tasks;
			ManagementPackElementCollection<ManagementPackMonitor> monitors;
			ManagementPackElementCollection<ManagementPackRule> 	 rules;

			libraryMp	 = new ManagementPack(@"c:\ManagementPacks\System.Library.xml");
			sqlMp		 = new ManagementPack(@"c:\ManagementPacks\Microsoft.SQLServer.2005.Monitoring.xml");
			classes		 = libraryMp.GetClasses();
			relationships   = libraryMp.GetRelationships();
			monitors		= sqlMp.GetMonitors();
			rules		 = sqlMp.GetRules();
			tasks		 = sqlMp.GetTasks();

			Console.WriteLine("Classes");

			foreach (ManagementPackClass mpClass in classes)
			{
				Console.WriteLine("\n\tName: {0}", mpClass.DisplayName);
			
				Console.WriteLine("\tProperties");

				foreach (ManagementPackClassProperty property in mpClass.PropertyCollection)
				{
					Console.WriteLine("\t\tName: {0}", property.Name);
			}
		}		 

			Console.WriteLine("\nRelationships");

			foreach (ManagementPackRelationship relationship in relationships)
			{
				Console.WriteLine("\tName: {0}", relationship.DisplayName);
				Console.WriteLine("\t\tSource: {0}", relationship.Source.Name);
				Console.WriteLine("\t\tTarget: {0}", relationship.Target.Name);
		}

			Console.WriteLine("\nMonitors");

			foreach (ManagementPackMonitor monitor in monitors)
			{
				Console.WriteLine("\n\tName: {0}", monitor.DisplayName);
				Console.WriteLine("\tTarget: {0}", monitor.Target.Name);
				Console.WriteLine("\tEnabled: {0}",monitor.Enabled);
		}

			Console.WriteLine("\nRules");

			foreach (ManagementPackRule rule in rules)
			{
				Console.WriteLine("\n\tName: {0}", rule.DisplayName);
				Console.WriteLine("\tTarget: {0}", rule.Target.Name);
				Console.WriteLine("\tEnabled: {0}", rule.Enabled);
		}

			Console.WriteLine("\nTasks");

			foreach (ManagementPackTask task in tasks)
			{
				Console.WriteLine("\n\tName: {0}", task.DisplayName);
				Console.WriteLine("\tTarget: {0}", task.Target.Name);
				Console.WriteLine("\tEnabled: {0}", task.Enabled);
		}
	}
}
}

Example

Description

The following example demonstrates how to retrieve the display name and version for all the Management Packs in a Management Group.

Code

Visual Basic  Copy Code
Imports System
Imports System.Collections.Generic
Imports System.Collections.ObjectModel
Imports System.Text
Imports Microsoft.EnterpriseManagement
Imports Microsoft.EnterpriseManagement.Configuration
Imports Microsoft.EnterpriseManagement.Configuration.IO


Namespace SDKSamples
	Class Program
		Public Overloads Shared Function Main(ByVal args() As String) As Integer

			Dim mg As ManagementGroup = New ManagementGroup("localhost")
			Dim managementPacks As ReadOnlyCollection(Of ManagementPack)

			managementPacks = mg.GetManagementPacks()

			For Each mp As ManagementPack In managementPacks

				Console.WriteLine("{0} - {1}", mp.DisplayName, mp.Version.ToString())
			Next
		End Function
	End Class
End Namespace
C#  Copy Code
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using Microsoft.EnterpriseManagement;
using Microsoft.EnterpriseManagement.Configuration;
using Microsoft.EnterpriseManagement.Configuration.IO;



namespace SDKSamples
{
	class Program
	{
		static void Main(string[] args)
		{
			ManagementGroup mg = new ManagementGroup("localhost");
			ReadOnlyCollection<ManagementPack> managementPacks;

			managementPacks = mg.GetManagementPacks();

			foreach (ManagementPack mp in managementPacks)
			{
				Console.WriteLine("{0} - {1}", mp.DisplayName,mp.Version.ToString());
		}
	}
}
}

See Also


Send comments about this topic to Microsoft.