Freigeben über


DSC-Konfigurationen

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

DSC-Konfigurationen sind PowerShell-Skripts, die einen speziellen Funktionstyp definieren. Um eine Konfiguration zu definieren, 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:

  • Der Konfigurationsblock. Dies ist der äußerste Skriptblock. Sie definieren es, indem Sie das Schlüsselwort Configuration verwenden und einen Namen angeben. In diesem Fall lautet MyDscConfigurationder Name der Konfiguration .
  • Ein oder mehrere Node-Blöcke . Diese definieren die Knoten (Computer oder VMs), die Sie konfigurieren. In der obigen Konfiguration gibt es einen Node-Block , der auf einen Computer mit dem Namen TEST-PC1. Der Node-Block kann mehrere Computernamen akzeptieren.
  • Ein oder mehrere Ressourcenblöcke. Hier legt die Konfiguration die Eigenschaften für die Ressourcen fest, die sie konfiguriert. In diesem Fall gibt es zwei Ressourcenblöcke, von denen jeder die WindowsFeature-Ressource aufruft.

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" in der PSDscResources-Dokumentation.

Innerhalb eines Konfigurationsblocks können Sie alles tun, was Sie normalerweise in einer PowerShell-Funktion tun könnten. Wenn Sie im vorherigen Beispiel den Namen des Zielcomputers in der Konfiguration nicht hartcodieren 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 beim Kompilieren der Konfiguration als ComputerName-Parameter übergeben. Der Standardname ist 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 obigen Beispiel können Sie entweder den -ComputerName Parameter verwenden oder eine durch Trennzeichen getrennte Liste von Computern direkt an den Node-Block übergeben.

MyDscConfiguration -ComputerName "localhost", "Server01"

Wenn Sie eine Liste von Computern für den Node-Block angeben, müssen Sie in einer Konfiguration die Array-Notation 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 ausführen können, müssen Sie sie in ein 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

Um eine Konfiguration aufzurufen, muss sich die Funktion im globalen Bereich befinden (wie bei jeder anderen PowerShell-Funktion). Sie können dies entweder durch "Dot-Sourcing" des Skripts oder durch Ausführen des Konfigurationsskripts mit F5 oder durch Klicken auf die Schaltfläche Skript ausführen in der ISE erreichen. Um das Skript als Dotsource zu verwenden, führen Sie den Befehl . .\myConfig.ps1 aus, wobei myConfig.ps1 der Name der Skriptdatei ist, die Ihre Konfiguration enthält.

Wenn Sie die Konfiguration aufrufen, gilt Folgendes:

  • Löst alle Variablen auf
  • Erstellt einen Ordner im aktuellen Verzeichnis mit dem gleichen Namen wie die Konfiguration.
  • Erstellt eine Datei mit dem Namen NodeName.mof im neuen Verzeichnis, wobei NodeName der Name des Zielknotens der Konfiguration ist. Wenn mehr als ein Knoten vorhanden ist, wird für jeden Knoten eine MOF-Datei erstellt.

Hinweis

Die MOF-Datei enthält alle Konfigurationsinformationen für den Zielknoten. Aus diesem Grund ist es wichtig, es sicher aufzubewahren. Weitere Informationen finden Sie unter Sichern der MOF-Datei.

Das Kompilieren der ersten obigen Konfiguration führt zu folgender 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 einen Parameter annimmt, wie im zweiten Beispiel, muss dieser zur Kompilierzeit angegeben werden. So würde das aussehen:

. .\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 Beispiele ausgeführt haben, haben Sie möglicherweise bemerkt, dass Sie gewarnt wurden, dass Sie eine Ressource verwenden, ohne sie explizit zu importieren. Heute wird DSC mit 12 Ressourcen als Teil des PSDesiredStateConfiguration-Moduls ausgeliefert.

Mit dem Cmdlet Get-DscResource können Sie ermitteln, welche Ressourcen auf dem System installiert sind und für die Verwendung durch das LCM verfügbar sind. Nachdem diese Module in $env:PSModulePathGet-DscResource platziert und ordnungsgemäß erkannt wurden, müssen sie noch in Ihre Konfiguration geladen werden.

Import-DscResource ist ein dynamisches Schlüsselwort, das nur innerhalb eines Configuration-Blocks erkannt werden kann, es handelt sich nicht um ein Cmdlet. Import-DscResource unterstützt zwei Parameter:

  • ModuleName ist die empfohlene Methode zur Verwendung von Import-DscResource. Es akzeptiert den Namen des Moduls, das die zu importierenden Ressourcen enthält (sowie ein Zeichenfolgenarray mit Modulnamen).
  • Name ist der Name der Ressource, die importiert werden soll. Dabei handelt es sich nicht um den Anzeigenamen, der von Get-DscResource als "Name" zurückgegeben wird, sondern um den Klassennamen, der beim Definieren des Ressourcenschemas verwendet wird (von Get-DscResource als ResourceType zurückgegeben).

Weitere Informationen zur Verwendung von Import-DSCResourcefinden Sie unter Verwenden von Import-DSCResource

Unterschiede zwischen PowerShell v4 und v5

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

Siehe auch