Wir freuen uns sehr mit diesem Blog-Artikel mitteilen zu können, dass ab sofort die aktuelle Version 3.1 unserer PowerShell Extensions (PSX) verfügbar ist.

Da sich ja sowohl der Firmenname des DSM-Herstellers (von "FrontRange Solutions" zu "HEAT Software") als auch der Produktname selbst (von "DSM" zu "HEAT Client Management") geändert haben, heißt unser Produkt nun offiziell "PowerShell Extensions for HEAT Client Management".

Die zentralen neuen Features sind:

Die PowerShell Extension 3.1 unterstützen die DSM-Versionen 2013.2 bis einschließlich 2015.1, sind also zu den vergangenen zwei Major-Releases abwärtskompatibel.

Im Folgenden die Neuerungen im Detail...

Seit DSM 2015.1 gibt es die Möglichkeit, Policy-Instanzen einzeln ausführen zu lassen. Das wurde zum Anlass genommen, das (in dieser Version einzige) neue Cmdlet Initialize-EmdbFastInstall zu implementieren, das einen FastInstall-Job erzeugt. Durch die Verwendung dieses Cmdlets ist daher sowohl möglich, alle ausstehenden Änderungen an einem Client-Computer ausführen zu lassen (entspricht dem Menüpunkt "Änderungen ausführen" im Computer-Kontextmenü in der DSM Konsole), als auch einzelne Policy-Instanzen auszuführen (entspricht dem Menüpunkt "Policy-Instanz sofort ausführen" im Kontextmenü von Policy-Instanzen in der DSM Konsole).

Zusammen mit diesem Kommando wurden auch zusätzliche Skript-Methoden für Computer- und Policy-Instanz Objekten definiert, die Initialize-EmdbFastInstall entsprechend aufrufen:

Neu ist wie oben bereits beschrieben, dass der Produktname zu "PowerShell Extensions for HEAT Client Management" geändert wurde. Damit wird, wenn Sie das Feature zur zentralen Ablage der Lizenzdatei verwenden, der Registrierungswert LicensePath jetzt im Registrierungsschlüssel HKEY_LOCAL_MACHINE\Software\NWC Services GmbH\PowerShell Extensions for HEAT Client Management erwartet. Wenn Sie eine Vorversion über das MSI aktualisieren, wird ein vorhandener Wert entsprechend angepasst.

Auf Anregung eines PSX-Anwenders wurden auch zwei neue Features implementiert, die sich mit dem Abrufen von DSM-Objekten über PSX beschäftigen:

  1. Für die Get-... und Remove-... Cmdlets wurde der zusätzliche Schalter -SingleItemExpected definiert (Ausnahmen: Get-/Remove-EmdbInstallationParameter, ...-EmdbVariableGroup, ...-EmdbVariable, ...-EmdbPolicy, ...-EmdbPolicyInstance). Der Parameter beschränkt die zulässige Ergebnismenge auf maximal ein Objekt. Bei mehr als einem Objekt wird eine entsprechende Fehlermeldung erzeugt, die dann im Script gegebenenfalls abgefangen werden kann. Bei interaktiver Verwendung weist die Fehlermeldung auf die nicht erwartete Ergebnismenge hin.
  2. Es ist nun auch möglich, Objekte durch Angabe ihrer DSM-Datenbank ID zu ermitteln bzw. abzurufen. Dazu wurde der zusätzliche Parameter -ItemID (alias -ID) für die Get-... und Remove-... Cmdlets definiert (Ausnahmen: Get-/Remove-EmdbInstallationParameter, Get-/Remove-EmdbVariableGroup, Get-/Remove-EmdbVariable, Remove-EmdbPolicy, Remove-EmdbPolicyInstance). Bei der Verwendung des Parameters mit den Cmdlets Get-EmdbPolicy und Get-EmdbPolicyInstance ist auch die Angabe von ID-Listen möglich.

Werden über die PSX Schemaerweiterungen definiert, so ermöglicht die zusätzliche Option Boolean für den Parameter -ValueType des Cmdlets Update-EmdbObjectSchema die Erstellung von Schemaerweiterungen vom Typ "Boolesch". Außerdem wurde der zusätzliche Parameter -NoDefaultValue definiert, der es ermöglicht, den Vorgabewert einer Schemaerweiterung auf "Nicht angegeben" (NULL) zurückzusetzen. Der Parameter -NoDefaultValue ist nur zusammen mit -ModifyProperty verfügbar. Beim Erstellen einer Schemaerweiterung hat das Weglassen des Parameters -DefaultValue die gleiche Wirkung.

Mit Version 2015.1 ist die SOAP API CreateImageFromComputerState entfallen. Davon betroffen ist das Cmdlet New-EmdbStateImage. Wird beim Aufruf eine DSM Version größer gleich 2015.1 festgestellt, dann wird eine hinweisende Warnung angezeigt, und der Vorgang wird abgebrochen. Mit dem Parameter -TryAnyway kann man die Ausführung erzwingen, und ggfs. auf die entsprechende DSM SOAP Fehlermeldung reagieren.

Ebenfalls neu in 2015.1 ist die Möglichkeit, mehrere Gruppenmitgliedschaften in einem Aufruf zu ändern. Daher haben Objekte vom Typ EmdbComputer, EmdbUser und EmdbSoftware neue Methoden zur Anpassung der Mitgliedschaften in statischen Gruppen bzw. Software-Kategorien erhalten:

Analog dazu sind die neuen Methoden für Objekte vom Typ Gruppen- und Software-Kategorieobjekte:

Bei den Cmdlets Add-EmdbGroupMember und Remove-EmdbGroupMember werden als Werte für die -Group und -Member Parameter statt EmdbItem- nur noch EmdbGroup- bzw. EmdbObject-Objekte bzw. -Pfade zu solchen Objekte akzeptiert. Damit werden unpassende Objekte bereits von PowerShell (außerhalb des Kommandos) zurückgewiesen bzw. ignoriert.

Neu ist auch eine Möglichkeit, gezielt einzelne Eigenschaften von Objekten zu aktualisieren. Dafür wurde die zusätzliche Methode UpdateProperties für die Basistypen EmdbObject, EmdbAssociation und EmdbPolicy definiert. Eingabeparameter ist jeweils eine Liste der Namen der zu aktualisierenden Eigenschaften. Dabei kann die Eigenschaftengruppe angegeben werden - Format: <Gruppe>.<Eigenschaft>. Zusätzlichen Varianten von UpdateProperties sind jeweils entsprechend zu den Varianten der Methode Update definiert.

Bei der Verwendung von UpdateProperties ist zu beachten, dass beim Aktualisierungsvorgang die Werte der nicht betroffenen Eigenschaften neu eingelesen werden. Das heißt "Änderung Eigenschaft A -> Änderung Eigenschaft B -> Aktualisierung Eigenschaft A -> Aktualisierung Eigenschaft B" funktioniert nicht, da mit "Aktualisierung Eigenschaft A" die vorgenommene "Änderung Eigenschaft B" überschrieben wird.

Stattdessen sollte nach

  1. "Änderung Eigenschaft A -> Aktualisierung Eigenschaft A -> Änderung Eigenschaft B -> Aktualisierung Eigenschaft B" oder nach
  2. "Änderung Eigenschaft A -> Änderung Eigenschaft B -> Aktualisierung Eigenschaften A und B" vorgegangen werden.

Für das DSM PowerShell-Laufwerk (Objekt vom Typ BlsEmdbDriveInfo) wurden zusätzliche Eigenschaften definiert:

Diverse Objekttypen, (Skript-)Eigenschaften und (Skript-)Methoden, die aus Gründen der Abwärtskompatibilität zu DSM Versionen vor 2013.2 noch vorhanden waren, wurden entfernt. Beim Aufruf einiger Methoden, die nicht mehr verwendet werden sollen, wird eine entsprechende Warnmeldung ausgegeben, die ankündigt, dass diese Methoden in absehbarer Zeit nicht mehr vorhanden sein werden. Entfernt wurden 15 Objekttypen, 36 Skript-Eigenschaften und 11 Skript-Methoden.

Schließlich wurde noch ein in PSX 3.0 vorhandener Bug gefixt: Die GetChildItem()-Methode von Software-Ordnern (EmdbSoftwareLibrary und EmdbSoftwareFolder) lieferte keine untergeordneten Software-Ordner, wenn der Parameter allRevisions deaktiviert war (Standardwert). Konsequenz: wurde diese Methode in der Vergangenheit verwendet, werden jetzt (vielleicht unerwartet aber korrekterweise) zusätzlich Software-Ordner-Objekte in der Ergebnismenge geliefert.