Schemaerweiterungen anlegen

Schemaerweiterungen sind eine Möglichkeit, die Informationen, die DSM 2017 in der DSMDB verwaltet, zu erweitern.


Dabei können die Objekttypen "Computer", "Benutzer" und "Software Paket" mit neuen Eigenschaften erweitert werden. Die Eigenschaften werden in Gruppen zusammengefasst. Dabei ist zu beachten, dass sowohl der Gruppenname als auch die Namen der Eigenschaften 'global' eindeutig sein müssen, d. h., dass eine namensgleiche Gruppe nicht am Objekttyp "Computer" und am Objekttyp "Benutzer" angelegt werden kann.


Beispiele:


Hinweis: Voraussetzung für die Beispiele ist ein verbundenes PowerShell-Laufwerk.


Eigenschaften einer Schemaerweiterung werden in Gruppen zusammengefasst. Gruppen lassen sich mit dem Cmdlet Update-EmdbObjectSchema erzeugen. Dazu müssen mindestens ein Laufwerk, der Schematyp, für den die neue Gruppe angelegt werden soll, und der Name der Gruppe spezifiziert werden:


Update-EmdbObjectSchema -Drive emdb -SchemaType Computer -AddGroup 'Location'


Im Beispiel wird also am Schematyp 'Computer' eine Gruppe mit dem Namen 'Location' angelegt.


Diese Gruppe kann nun mit Eigenschaften verschiedener Typen gefüllt werden. Zunächst wird eine Eigenschaft mit dem Namen 'Manager' eingefügt. Diese ist vom Typ 'TextField', d. h. sie kann eine Zeichenkette aufnehmen. Die maximale Länge soll 128 Zeichen betragen:

Update-EmdbObjectSchema -Drive emdb -SchemaType Computer -ModifyGroup 'Location' -AddProperty 'Manager' -ValueType textfield -MaxLength 128


Als nächstes wird eine Eigenschaft vom Typ 'OptionList' hinzugefügt. Eine Optionsliste enthält Schlüssel-Werte-Paare, wobei die Werte in lokalisierter Form vorliegen. Zunächst wird eine Datenstruktur mit diesen Schlüssel-Werte-Paaren vorbereitet und diese in einem zweiten Schritt im Parameter PredefinedValues an das Cmdlet übergeben:

$MySites =  @{"pforzheim" = @{"de" = "Pforzheim"; "en" = "Pforzheim"}; "muenchen" = @{"de"="München"; "en" = "Munich"}}

Update-EmdbObjectSchema -Drive emdb -SchemaType Computer -ModifyGroup 'Location' -AddProperty 'Site' -ValueType optionlist -PredefinedValues $MySites


Die Gruppe 'Location' enthält nun zwei Eigenschaften: 'Manager' vom Typ TextField und 'Site' vom Typ OptionList.


Im nächsten Beispiel soll die Eigenschaft 'Site' um eine Auswahlmöglichkeit erweitert werden. Dazu wird über den Parameter PredefinedValues die neue Auswahlmöglichkeit spezifiziert. Alle anderen Auswahlmöglichkeiten sind von dieser Änderung nicht betroffen:


$MySites =  @{"berlin" = @{"de" = "Berlin"; "en" = "Berlin"}}

Update-EmdbObjectSchema -Drive emdb -SchemaType Computer -ModifyGroup 'Location' -ModifyProperty 'Site' -PredefinedValues $MySites


Schemaerweiterungen lassen sich nicht wieder entfernen, alternativ können sie aber deaktiviert werden. Im nächsten Beispiel soll die gerade hinzugefügte Auswahlmöglichkeit deaktiviert werden. Dazu wird in Datenstruktur der Schlüssel beibehalten, aber der Wert wird auf $False geändert und das Cmdlet aufgerufen:


$MySites =  @{"berlin" = $False}

Update-EmdbObjectSchema -Drive emdb -SchemaType Computer -ModifyGroup 'Location' -ModifyProperty 'Site' -PredefinedValues $MySites


Durch verwenden der Objekte $True und $False ändert sich die Semantik des Aufrufs so, dass nicht die lokalisierten Anzeigenamen auf $True oder $False gesetzt werden, sondern die Option deaktiviert wird. Analog lassen sich nicht nur Optionen, sondern auch Eigenschaften als ganze deaktivieren. Der folgende Aufruf deaktiviert die Eigenschaft 'Site':


Update-EmdbObjectSchema -Drive emdb -SchemaType Computer -ModifyGroup 'Location' -ModifyProperty 'Site' -isDisabled $True


Deaktivierte Eigenschaften lassen sich wieder aktivieren, indem der Wert $True zugewiesen wird bzw. der Parameter -isDisabled auf $False gesetzt wird.