Die DSC-Script-Ressource etwas flexibler einsetzen

Zu den knapp ein Dutzend DSC-Ressourcen, die bei der PowerShell 5.0 von Anfang an dabei sind, gehört auch die Script-Ressource. Mit ihrer Hilfe ist es möglich, auf einem Node bei der Anwendung der Ressource durch den LCM beliebige Skriptbefehle auszuführen. Das hört sich zunächst einmal gut an, etwas kniffliger ist es die Ressource so einzusetzen, dass sie wirklich etwas bringt. Das bedeutet konkret, Parameterwerte, die Teil der Konfigurationsdaten sind, in die per SetScript ausgeführten Befehle einzubauen.

Die Script-Ressource umfasst drei Eigenschaften: TestScript, GetScript und SetScript. Alle drei Eigenschaften sind vom Typ String, ihnen kann aber auch ein ScriptBlock zugewiesen werden was im Allgemeinen die etwas flexiblere Variante ist. TestScript enthält einen Befehl/Befehlsfolge, die einen $true/$false-Wert zurückgeben muss. Nur wenn der Wert $false ist, wird der Befehl ausgeführt, der über SetScript festgelegt wird. GetScript erfüllt keine echte Funktion. Die Befehlsfolge muss eine Hashtable mit einer Result-Eigenschaft zurückgeben, die einen beliebigen Wert besitzen kann.

Soweit, so gut. In der Regel sollen die per SetScript auszuführenden Befehle Werte verarbeiten, die Teil der Konfigurationsdaten sind. Dazu muss die Variable Node in die Befehlskette eingebaut werden. Am einfachsten geschieht dies, in dem der Node-Variablen ein „using:“ vorangestellt wird. Per Using kann auch eine Variable angesprochen werden, die außerhalb der Konfiguration definiert ist.

Im folgenden Beispiel soll eine Datei über das Web herunterladen und in einem lokalen Verzeichnis abgelegt werden. Die Url ist Teil der Konfigurationsdaten und wird daher über die Node-Variable angesprochen.

Der folgende Aufruf setzt die Konfiguration um.

Der folgende Aufruf überträgt die Konfiguration auf den über die Konfigurationsdaten festgelegten Computer (in diesem Beispiel ist es der lokale Computer).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

This site uses Akismet to reduce spam. Learn how your comment data is processed.