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:
#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 ;)
Comments
Anonymous
January 01, 2003
Summary This document will provide guidance to online links, resources, tools and blogs to assist inAnonymous
January 01, 2003
PingBack from http://mstechnews.info/2008/11/get-monitoringclass/