Operations Manager Command Shell Main Menu
Welcome to TechNet Blogs Sign in | Join | Help

Jonathan Almquist on Operations Manager


Learn how to work directly with me or one of my peers
Get-MonitoringClass

This example demonstrates the Operations Manager Command Shell Get-MonitoringClass cmdlet, using the GetMonitoringProperties and FindHostClass methods.

While authoring a Management Pack, we need to know what MonitoringClass properties are available to us.  If you're like me, my curiosity always leads me looking into the various relationships between these classes and what properties I had available to me further up the path ($Target/Host/Property).  So, I decided to write a PowerShell script to help me in understanding these relationships and properties quickly.

What it does:

The output will display your target class properties, as well as the entire Base class path and its respective properties (if any).  It will then process the same for it's Host Class.  This will loop until the Hosting relationship has been exhausted, giving a view of the relationships and properties of your target class all the way up to System.Entity.

Usage:

.\getClassPath.ps1 <class_name>

Example of output:

image

#begin

##This script accepts a class name, and returns the entire
##Base class path. It also returns Host Class for each
##Base class returned. Essentially, you'll see the entire
##class path for the given class.
##Author: Jonathan Almquist
##Microsoft - Services - Premier Field Engineer
##version 1.0
##11-01-2008
##Usage = getClassPath.ps1 <class_name>
##Example = getClassPath.ps1 Microsoft.Windows.Computer

param($classname)
$ast = "-"
$class = get-monitoringclass | where {$_.name -eq $classname}
Write-Host ($ast * 50)
Write-Host "TARGET CLASS" $class
Write-Host ($ast * 50)`n
while ($class -ne "False")
    {
    $property = $class | foreach-object {$_.getMonitoringProperties()} | Select-Object name
    foreach ($value in $Property)
        {
        if ($value.name -ne $null)
            {
            write-host `t`t`t`t $value.name
            }
            else
            {
            Write-Host `t`t`t`t "No properties"
            }
        }
    write-host `n
    Write-Host ($ast * 50)
    Write-Host "BASE CLASS PATH for" $class
    Write-Host ($ast * 50)`n
    $baseclass = get-monitoringclass | where {$_.id -eq $class.base.id.tostring()}
    While ($baseclass.base.id -ne $NULL)
        {
        $baseclass.name
        $property = $baseclass | foreach-object {$_.getMonitoringProperties()} | Select-Object name
        foreach ($value in $Property)
            {
            write-host `t`t`t`t $value.name
            }
        $baseclass = get-monitoringclass | where {$_.id -eq $baseclass.base.id.tostring()}
        }
    if ($class.hosted -eq "True")
        {
        $hostclass = get-monitoringclass | where {$_.name -eq $Class.Name} | ForEach-Object {$_.findHostClass()}
        write-host `n
        Write-Host ($ast * 50)
        Write-Host "HOST CLASS for" $class
        Write-Host ($ast * 50)`n
        $class = get-monitoringclass | where {$_.name -eq $Class.Name} | ForEach-Object {$_.findHostClass()}
        Write-Host $class
        }
        else
        {
        write-host `t`t "*Not Hosted*" `n`n
        $class = "False"
        }
    }

#end

In case you've seen my previous version getClassChain, this is the same script.  I fixed an issue with the previous version, and renamed it.  Just thought this was a more fitting name...don't mean to confuse anyone ;)

Posted: Saturday, November 01, 2008 3:01 AM by jtalmquist

Attachment(s): getClassPath.ps1

Comments

System Center Consulting said:

Summary This document will provide guidance to online links, resources, tools and blogs to assist in

# February 6, 2009 10:15 PM
Leave a Comment

(required) 

(required) 

(optional)

(required) 

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Page view tracker