A few years ago, I wrote a powershell script that returns the entire base and host class path for a given class, including all available properties on each of the classes. This can be useful in a few different scenarios, including management pack development.
I haven’t used the script in a while, but the other day ran into a situation where it was quite handy. I had to update it to work with SCOM 2012, however, so I thought I would post the updated script here for future reference.
You can find the SCOM 2007 version here.
##This script accepts a class name, and returns the entire ##Base class path. It also returns Host Class for each ##Base class returned. You'll see the entire ##class path for the given class. ##Author: Jonathan Almquist, Scomskills ##version 2.0 (for SCOM 2012) ##Original: 11-01-2008 ##Updated: 07-07-2014 ##Usage = getClassPath.ps1 <class_system_name> ##Example = getClassPath.ps1 Microsoft.Windows.Computer param($classname) $ast = "-" $class = get-scomclass | 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 {$_.getProperties()} | 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-scomclass | where {$_.id -eq $class.base.id.tostring()} While ($baseclass.base.id -ne $NULL) { $baseclass.name $property = $baseclass | foreach-object {$_.getProperties()} | Select-Object name foreach ($value in $property) { write-host `t`t`t`t $value.name } $baseclass = get-scomclass | where {$_.id -eq $baseclass.base.id.tostring()} } if ($class.hosted -eq "True") { $hostclass = get-scomclass | 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-scomclass | where {$_.name -eq $class.Name} | ForEach-Object {$_.findHostClass()} Write-Host $class } else { write-host `t`t "*Not Hosted*" `n`n $class = "False" } }
đ
Thanks for this. Just wondering if you can start to add attachments to your posts, especially when you post code. I don’t want to have to call TC or Rick to get this done. đ
I’ll think about it đ