SCOM – Objekte per Powershell bearbeiten

Ich bin gestern auf einen sehr interessanten Blog Eintrag von Michel Kamp gestoßen.

Dieser beschreibt, wie man mit Powershell SCOM Objekte erstellen, bearbeiten und löschen kann. Die Darstellung der Beispiel-Skripte auf seiner Seite ist für das Kopieren schlecht geeignet, daher hier der Versuch, seine(!) Skripte in einer Form zu zeigen, aus der man besser kopieren kann.

Unabhängig davon ist es das erste Mal, dass ich diese Art von Powershell-Bearbeitung für SCOM gefunden habe – daher vielen Dank an Michel !!

Neue Klasseninstanz hinzufügen:

## ======================================================================
## example script how to add a class instance in SCOM
## ======================================================================
## Michel Kamp
## ======================================================================
New-SCOMManagementGroupConnection -ComputerName "localhost"
$mg = Get-SCOMManagementGroup
$ClassInstanceDisplayName = "My_ESX_Host"
$Class = Get-SCOMClass -Name OpsLogix.IMP.VMWare.ESXHost
##================= create/add class instance
$ClassObject = New-Object Microsoft.EnterpriseManagement.Common.CreatableEnterpriseManagementObject($mg,$class)
# set the KEY props
$ClassObject[$Class.FindHostClass().FindHostClass(),"vCenterHostName"].Value = "vCenter01:7443"
$ClassObject[$Class.FindHostClass(),"DatacenterName"].Value = "Datacenter01"
$ClassObject[$Class,"ESXServerName"].Value =
$ClassInstanceDisplayName
# Set NON key props
$ClassObject[$Class,"AssetTag"].Value = "unkown"
# add and write back to scom
$discovery = New-Object Microsoft.EnterpriseManagement.ConnectorFramework.IncrementalDiscoveryData
$discovery.Add($ClassObject)
$discovery.Overwrite($mg)
##================= END ================================================

Attribute eines Objektes ändern:

## ======================================================================
## example script how to change a class instance in SCOM
## ======================================================================
## Michel Kamp
## ======================================================================
New-SCOMManagementGroupConnection -ComputerName "localhost"
$mg = Get-SCOMManagementGroup
$ClassInstanceDisplayName = "My_ESX_Host"
$Class = Get-SCOMClass -Name OpsLogix.IMP.VMWare.ESXHost
##================= change property of class instance
## get the just created class
$ClassInstance = Get-SCOMMonitoringObject -Class $Class | where { $_.DisplayName -eq $ClassInstanceDisplayName}
# change the properties
# only NON-KEY props can be changed
$ClassInstance[$Class,"AssetTag"].Value = "test tag 123"
# write it to scom
$ClassInstance.Overwrite()
##================= END ================================================

Objekt löschen:

## ======================================================================
## example script how to delete a class instance in SCOM
## ======================================================================
## Michel Kamp
## ======================================================================
New-SCOMManagementGroupConnection -ComputerName "localhost"
$mg = Get-SCOMManagementGroup
$ClassInstanceDisplayName = "My_ESX_Host"
$Class = Get-SCOMClass -Name OpsLogix.IMP.VMWare.ESXHost
##============== remove a class instance
## get the class instance to remove
$ClassInstance = Get-SCOMMonitoringObject -Class $Class | where { $_.DisplayName -eq $ClassInstanceDisplayName}
# add the class instance to delete
$discovery = New-Object Microsoft.EnterpriseManagement.ConnectorFramework.IncrementalDiscoveryData
$discovery.RemoveInternal($ClassInstance,$ClassInstance.GetClasses()[0])
## execute the delete
$discovery.Commit($mg)
##================= END ================================================

An dieser Stelle nochmals der Hinweis: der oben gezeigte Powershellcode ist von Michel Kamp. Benutzung auf eigene Gefahr.

Starten Sie jetzt Ihren Weg zu Azure!

Los geht's

top