SCVMM: mit Powershell Teil 2

blockdeviceIn diesem Blogpost werde ich die Arbeit mit den neuen Custom Properties im SCVMM 2012 vorstellen.

In Vergangenheit gab es eine Reihe von vordefinierten Custom Properties (1-10). Mit SCVMM 2012 gibt es beliebige Erweiterungsfelder, die als Objekt abgebildet sind und an Virtuellen Maschinen, Hosts, Clouds und anderen Objekten hängen können.

Diese Objekte kann man in Powershell mittels get-SCCustomProperty abrufen. Diese Objekte beinhalten aber noch keine Werte, sondern stellen nur die Schlüssel dar. Die eigentlich eingestellten Werte hängen in einer Hashtable an den zu erweiternden Objekten, also z.B. an der jeweiligen Virtuellen Maschine in der Hashtable Eigenschaft CustomProperty. Möchte man den Wert der selbsterstellten Eigenschaft “Kostenstelle” abfragen, so kann man dies über

$kostenstelle=get-SCCustomProperty –Name "Kostenstelle"
$wert=$vm.CustomProperty.get_item($kostenstelle)

Nachfolgend noch eine etwas “komplexere” Funktion, um alle Custom Properties von der Virtuellen Maschine $vm auf die Maschine $targetVM zu übertragen:

if ($vm.CustomProperty.Count -gt 0)
{
    $vm.CustomProperty.Keys | ForEach-Object{
        Set-SCCustomPropertyValue -InputObject $targetvm -CustomProperty (Get-SCCustomProperty -Name $_) -Value $vm.CustomProperty.get_item($_)
    }
}

In der ersten Zeile wird zur Sicherheit überprüft, ob überhaupt Custom Properties an diesem Objekt hängen (HashTable speichert die Anzahl der Einträge in Count). Danach werden alle CustomProperty Objekte aus der Key Eigenschaft ausgelesen und durchlaufen. Durch set-SCCustomPropertyValue wird das Objekt und der Wert an das Zielobjekt übertragen.

This entry was posted in Deutsch, System Center, Virtual Machine Manager and tagged , . Bookmark the permalink.