DSC-Konfigurationen

Gilt für: Windows PowerShell 4.0, Windows PowerShell 5.0

DSC-Konfigurationen sind PowerShell-Skripts, die eine besondere Art von Funktion definieren. Zum Definieren einer Konfiguration verwenden Sie das PowerShell-Schlüsselwort Configuration.

Configuration MyDscConfiguration {
    Node "TEST-PC1" {
        WindowsFeature MyFeatureInstance {
            Ensure = 'Present'
            Name = 'RSAT'
        }
        WindowsFeature My2ndFeatureInstance {
            Ensure = 'Present'
            Name = 'Bitlocker'
        }
    }
}
MyDscConfiguration

Speichern Sie das Skript als .ps1-Datei.

Konfigurationssyntax

Ein Konfigurationsskript besteht aus den folgenden Teilen:

  • Dem Configuration-Block. Dies ist die äußerste Skriptblock. Sie definieren ihn mithilfe des Schlüsselworts Configuration und der Angabe eines Namens. In diesem Fall ist MyDscConfigurationder Name der Konfiguration .
  • Mindestens einem Node-Block. Diese Blöcke definieren die Knoten (Computer oder VMs), die Sie konfigurieren. In der obigen Konfiguration gibt es einen Knotenblock , der auf einen Computer mit dem Namen " TEST-PC1. Der Knotenblock kann mehrere Computernamen akzeptieren.
  • Mindestens einen Ressourcenblock. In diesen Blöcken werden die Eigenschaften der Ressourcen festlegt, die konfiguriert werden. In diesem Fall gibt es zwei Ressourcenblöcke, die jeweils die WindowsFeature-Ressource aufrufen.

Hinweis

Die WindowsFeature DSC-Ressource ist nur auf Windows Server-Computern verfügbar. Für Computer mit einem Clientbetriebssystem wie Windows 11 müssen Sie stattdessen WindowsOptionalFeature verwenden. Weitere Informationen finden Sie im Abschnitt "WindowsOptionalFeature" der PSDscResources-Dokumentation.

Innerhalb eines Configuration-Blocks sind alle Aktionen möglich, die Sie normalerweise mit einer PowerShell-Funktion ausführen. Wenn Sie im vorherigen Beispiel den Namen des Zielcomputers in der Konfiguration nicht hart codieren möchten, können Sie einen Parameter für den Knotennamen hinzufügen.

In diesem Beispiel geben Sie den Namen des Knotens an, indem Sie ihn als ComputerName-Parameter übergeben, wenn Sie die Konfiguration kompilieren. Der Name ist standardmäßig auf localhost.

Configuration MyDscConfiguration
{
    param
    (
        [string[]]$ComputerName='localhost'
    )

    Node $ComputerName
    {
        WindowsFeature MyFeatureInstance
        {
            Ensure = 'Present'
            Name = 'RSAT'
        }

        WindowsFeature My2ndFeatureInstance
        {
            Ensure = 'Present'
            Name = 'Bitlocker'
        }
    }
}

MyDscConfiguration

Der Node-Block kann auch mehrere Computernamen akzeptieren. Im Beispiel oben können Sie entweder den -ComputerName-Parameter verwenden oder eine durch Trennzeichen getrennte Liste der Computer direkt an den Node Block übergeben.

MyDscConfiguration -ComputerName "localhost", "Server01"

Wenn Sie eine Liste von Computern für den Knotenblock angeben, müssen Sie in einer Konfiguration arraynotation verwenden.

Configuration MyDscConfiguration
{
    Node @('localhost', 'Server01')
    {
        WindowsFeature MyFeatureInstance
        {
            Ensure = 'Present'
            Name = 'RSAT'
        }

        WindowsFeature My2ndFeatureInstance
        {
            Ensure = 'Present'
            Name = 'Bitlocker'
        }
    }
}

MyDscConfiguration

Kompilieren der Konfiguration

Bevor Sie eine Konfiguration anwenden können, müssen Sie sie in einem MOF-Dokument kompilieren. Dazu rufen Sie die Konfiguration wie eine PowerShell-Funktion auf. Die letzte Zeile des Beispiels, die nur den Namen der Konfiguration enthält, ruft die Konfiguration auf.

Hinweis

Damit eine Konfiguration aufgerufen werden kann, muss sie sich (wie jede andere PowerShell-Funktion) im globalen Bereich befinden. Dies erfolgt, indem Sie das Skript mit „Dot-Sourcing“ ausführen oder das Konfigurationsskript durch Drücken von F5 oder Klicken auf die Schaltfläche Skript ausführen in der integrierte Skriptumgebung starten. Um das Skript mit „Dot-Sourcing“ ausführen, rufen Sie den Befehl . .\myConfig.ps1 auf, wobei myConfig.ps1 der Name der Skriptdatei mit Ihrer Konfiguration ist.

Beim Aufruf der Konfiguration erfolgt Folgendes:

  • Alle Variablen werden aufgelöst.
  • Im aktuellen Verzeichnis wird ein Ordner mit dem Namen der Konfiguration erstellt.
  • Eine Datei namens NodeName.mof wird im neuen Verzeichnis erstellt, wobei NodeName der Name des Zielknotens der Konfiguration ist. Wenn mehrere Knoten vorhanden sind, wird eine MOF-Datei für jeden Knoten erstellt.

Hinweis

Die MOF-Datei enthält alle Konfigurationsinformationen für den Zielknoten. Aus diesem Grund ist es wichtig, sie geschützt zu halten. Weitere Informationen finden Sie unter Schützen der MOF-Datei.

Das Kompilieren der ersten oben gezeigten Konfiguration führt zur folgenden Ordnerstruktur:

. .\MyDscConfiguration.ps1
MyDscConfiguration
    Directory: C:\users\default\Documents\DSC Configurations\MyDscConfiguration
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       10/23/2015   4:32 PM           2842 localhost.mof

Wenn die Konfiguration wie im zweiten Beispiel einen Parameter verwendet, muss dieser zur Kompilierungszeit angegeben werden. Das sieht dann so aus:

. .\MyDscConfiguration.ps1
MyDscConfiguration -ComputerName 'MyTestNode'
    Directory: C:\users\default\Documents\DSC Configurations\MyDscConfiguration
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       10/23/2015   4:32 PM           2842 MyTestNode.mof

Verwenden neuer Ressourcen in Ihrer Konfiguration

Wenn Sie die vorherigen Beispielen ausgeführt haben, werden Sie vielleicht die Warnung bemerkt haben, dass Sie eine Ressource verwendet haben, ohne sie explizit zu importieren. Derzeit gehören 12 Ressourcen zum Funktionsumfang von DSC im „PSDesiredStateConfiguration“-Modul.

Das Cmdlet Get-DscResource kann verwendet werden, um zu bestimmen, welche Ressourcen im System installiert sind und dem LCM zur Verfügung stehen. Nachdem diese Module in $env:PSModulePath abgelegt und von Get-DscResource ordnungsgemäß erkannt wurden, müssen sie dennoch in Ihre Konfiguration geladen werden.

Import-DscResource ist ein dynamisches Schlüsselwort, das nur in einem Configuration-Block erkannt werden kann. Es handelt sich nicht um ein Cmdlet. Import-DscResource unterstützt zwei Parameter:

  • ModuleName ist die empfohlene Methode der Verwendung von Import DscResource. Dieser Parameter akzeptiert den Namen des Moduls mit den Ressourcen, die importiert werden sollen, (sowie einem Zeichenfolgenarray mit Modulnamen).
  • Name ist der Name der zu importierenden Ressource. Dies ist nicht der Anzeigename, der als „Name“ von Get-DscResource zurückgegeben wird, sondern der Klassennamen, der verwendet wird, wenn Sie das Ressourcenschema definieren (wird als ResourceType von Get-DscResource zurückgegeben).

Weitere Informationen zur Verwendung von Import-DSCResource finden Sie unter Verwenden von „Import-DSCResource“.

Unterschiede zwischen PowerShell v4 und v5

Es gibt Unterschiede in Bezug darauf, wo DSC-Ressourcen in PowerShell 4.0 gespeichert werden müssen. Weitere Informationen finden Sie unter Ressourcenspeicherort.

Weitere Informationen