Tags: PowerShell, Configuration-Management
DSC eignet sich auch für die Konfiguration von vielen Rechnern in großen Umgebungen. Daher bietet die Technologie die nötigen Mittel, um Nodes flexibel festzulegen, auf welche eine Konfiguration angewandt werden soll. Dazu zählen Parameter, die auch andere Aspekte einer configuration anpassen können.
Innerhalb einer configuration dient das reservierte Wort Node dazu, den oder die Rechner anzugeben, die man damit anpassen möchte. In einfachen Fällen trägt man hier den Namen direkt als String ein, und wenn es mehrere sind, dann trennt man sie durch Kommata. Will man die Konfiguration nur lokal auf jedem Rechner anwenden und nicht remote, dann tut es hier auch "localhost".
Statische Definition von Nodes
In meinem Grundlagenbeitrag zum DSC-Konzept habe ich eine simple configuration erstellt, mit der sich SMB v1 in Windows 8.1 oder 10 deinstallieren lässt. Ihre Definition sah dort so aus:
Es liegt auf der Hand, dass ein solches Vorgehen ziemlich unflexibel ist. Jedes Mal, wenn man die Liste der Nodes ändern möchte, muss man die configuration bearbeiten und "Win10-VM1" durch andere Namen ersetzen.
Parameter wie bei Funktionen
Eine Alternative zu dieser statischen Variante besteht daher darin, Parameter zu verwenden, so dass man die Hostnamen als Argumente übergeben kann. Nachdem es sich bei einer configuration um eine spezielle Form einer function handelt, erfolgt die Definition der Parameter in der gleichen Syntax.
Es gilt aber die Einschränkung, dass die einfache Notation, wo Parameter direkt auf den Namen der function folgen, bei einer configuration nicht erlaubt ist:
configuration DisableSMB1( [string] $Hosts){
# Das funktioniert nicht
Stattdessen muss man das Keyword param verwenden, um die Parameter innerhalb der configuration zu deklarieren:
In diesem Beispiel erwartet der Aufruf von DisableSMB1, dass der oder die Namen der Rechner über den Parameter $hosts als Array von Strings übergeben wird. Das kann ein einzelner Wert sein oder mehrere Zeichenketten, die man durch Kommata trennt:
DisableSMB1 -hosts "Win10Pro-VM1","Win10Pro-VM2"
Ruft man die configuration ohne Parameter auf, dann muss man sie anschließend interaktiv eingeben.
Generische configuration mit weiteren Parametern
Neben den Namen der Computer könnte man zusätzliche Parameter verwenden, beispielsweise für das Feature oder den Betriebsmodus (Enable bzw. Disable). Auf diese Weise erhielte man eine generische Konfiguration zum Aktivieren oder Deaktivieren von Features:
Um beispielsweise die einfachen TCP/IP-Dienste zu installieren, könnte man die configuration, die ich aufgrund ihrer neuen Funktionen nun OptionalFeature nenne, so aufrufen:
OptionalFeature -hosts "Win10Pro-VM1","Win10Pro-VM2" -feature "SimpleTCP" -mode "Enable"
Das Ergebnis wären .mof-Dateien für die Nodes Win10Pro-VM1 und Win10Pro-VM2, die man etwa mit Start-DscConfiguration lokal oder remote auf diese Hosts anwenden kann, um das betreffende Feature zu aktivieren.
Täglich Know-how für IT-Pros mit unserem Newsletter
Ähnliche Beiträge
- Desired State Configuration: Zielsysteme festlegen mit ConfigurationData
- Test-DscConfiguration, DSCEA: Konfiguration von PCs remote überprüfen
- Anleitung: SMB v1 mit Desired State Configuration deinstallieren oder deaktivieren
- Desired State Configuration (DSC): Grundlagen und Funktionsweise
- Bit-Operatoren in PowerShell: -band, -bor, -bxor, -bnot, -shl, -shr
Weitere Links