Exporting the SCOM class hierarchy to XML

SCOM uses an object orientated data model and builds an internal, extensible class (type) hierarchy:


Each class can have specific properties (which will be inherited to child classes) and relationships to other classes. The depth and breadth of this class hierarchy depends on the number of imported Management Pack. “I know that!”, you might say. Well, most SCOM admins knows that. But the interesting question is:
Have you actually seen the whole class structure of your Management Group?


Viewing the class hierarchy in the SCOM console

AFAIK there is only one (hidden) way to view a graphical representation of the current SCOM class hierarchy (class tree):
If you create/modify a “Distributed Application” (DA) you can add “components” (aka classes) to your DA. This wizard shows the current class hierarchy in a graphical tree view:



Creating a searchable export of your class hierarchy

Sometimes, e.g. when creating Management Packs, it is helpful to have a current, searchable class tree of your Management Group at hand. I created a small PowerShell function which does exactly that:
The function get-customscomclasstree creates a XML files containing all classes in your Management Group in a hierarchical structure. It also allows you to (optional) export all properties and relationships of the processed classes. Using the function is easy:
Simply copy the function to your computer, open up an OpsMgr shell and have a look at the help:


Then call the function…


… and have a look at the resulting XML. It contains some general information and all classes in your Management Group:

The classes are hierarchically structured, so you can always see, which class depends on another (or is derived from another):

So if you are curious and want to have a look at your current class structure: feel free to download the function from TechnetGallery and give it a try!
If somebody likes the function and is good at writing XSL and XSLT: It would be nice having the output as an XHTML file :)