Freigeben über


about_DesiredStateConfiguration

Kurze Beschreibung

Enthält eine kurze Einführung in das Feature PowerShell Desired State Configuration (DSC).

Lange Beschreibung

DSC ist eine Verwaltungsplattform in PowerShell, die das Bereitstellen und Verwalten von Konfigurationsdaten für Softwaredienste und die Verwaltung der Umgebung ermöglicht, in der diese Dienste ausgeführt werden.

DSC stellt eine Reihe von PowerShell-Spracherweiterungen, neuen Cmdlets und Ressourcen bereit, mit denen Sie deklarativ angeben können, wie der Status Ihrer Softwareumgebung konfiguriert werden soll. DSC bietet außerdem eine Möglichkeit zum Warten und Verwalten vorhandener Konfigurationen.

DSC wird in PowerShell 4.0 eingeführt.

Ausführliche Informationen zu DSC finden Sie unter PowerShell Desired State Configuration Overview.For detailed information about DSC, see PowerShell Desired State Configuration Overview.

ENTWICKELN VON DSC-RESSOURCEN MIT KLASSEN

Ab PowerShell 5.0 können Sie DSC-Ressourcen mithilfe von Klassen entwickeln. Weitere Informationen finden Sie unter about_Classes und Schreiben einer benutzerdefinierten DSC-Ressource mit PowerShell-Klassen.

USING DSC

Wenn Sie DSC zum Konfigurieren Ihrer Umgebung verwenden möchten, definieren Sie zuerst einen PowerShell-Skriptblock mit dem Konfigurations-Schlüsselwort (keyword), gefolgt von einem Bezeichner, gefolgt von dem Paar geschweifter geschweifter Klammern, die den Block trennen. Innerhalb des Konfigurationsblocks können Sie Knotenblöcke definieren, die den gewünschten Konfigurationsstatus für jeden Knoten (Computer) in der Umgebung angeben. Ein Knotenblock beginnt mit dem Node Schlüsselwort (keyword), gefolgt vom Namen des Zielcomputers, der eine Variable sein kann. Nach dem Computernamen kommen die geschweiften geschweiften Klammern, die den Knotenblock trennen. Innerhalb des Knotenblocks können Sie Ressourcenblöcke definieren, um bestimmte Ressourcen zu konfigurieren. Ein Ressourcenblock beginnt mit dem Typnamen der Ressource, gefolgt von dem Bezeichner, den Sie für diesen Block angeben möchten, gefolgt von den geschweiften geschweiften Klammern, die den Block trennen, wie im folgenden Beispiel gezeigt.

Configuration MyWebConfig {
    # Parameters are optional
    param ($MachineName, $WebsiteFilePath)
    # A Configuration block can have one or more Node blocks
    Node $MachineName
    {
        # Next, specify one or more resource blocks
        # WindowsFeature is one of the resources you can use in a Node block
        # This example ensures the Web Server (IIS) role is installed
        WindowsFeature IIS
        {
            # To ensure that the role is not installed, set Ensure to "Absent"
            Ensure = "Present"
            Name = "Web-Server" # Use the Name property from Get-WindowsFeature
        }

        # You can use the File resource to create files and folders
        # "WebDirectory" is the name you want to use to refer to this instance
        File WebDirectory
        {
            Ensure = "Present"  # You can also set Ensure to "Absent"
            Type = "Directory" # Default is "File"
            Recurse = $true
            SourcePath = $WebsiteFilePath
            DestinationPath = "C:\inetpub\wwwroot"

            # Ensure that the IIS block is successfully run first before
            # configuring this resource
            DependsOn = "[WindowsFeature]IIS"  # Use for dependencies
        }
    }
}

Rufen Sie zum Erstellen einer Konfiguration den Konfigurationsblock auf die gleiche Weise auf, wie Sie eine PowerShell-Funktion aufrufen würden, und übergeben Sie alle erwarteten Parameter, die Sie möglicherweise definiert haben (zwei im obigen Beispiel). In diesem Fall beispielsweise:

MyWebConfig -MachineName "TestMachine" -WebsiteFilePath `
  "\\filesrv\WebFiles" -OutputPath "C:\Windows\system32\temp"
# OutputPath is optional

Dadurch wird eine MOF-Datei pro Knoten am angegebenen Pfad generiert. Diese MOF-Dateien geben die gewünschte Konfiguration für jeden Knoten an. Verwenden Sie als Nächstes das folgende Cmdlet, um die MOF-Konfigurationsdateien zu analysieren, jeden Knoten seine entsprechende Konfiguration zu senden und diese Konfigurationen zu erlassen. Beachten Sie, dass Sie keine separate MOF-Datei für klassenbasierte DSC-Ressourcen erstellen müssen.

Start-DscConfiguration -Verbose -Wait -Path "C:\Windows\system32\temp"

VERWENDEN VON DSC ZUM VERWALTEN DES KONFIGURATIONSZUSTANDS

Mit DSC ist die Konfiguration idempotent. Dies bedeutet, dass der resultierende Konfigurationsstatus immer gleich ist, wenn Sie DSC verwenden, um dieselbe Konfiguration mehrmals zu erstellen. Aus diesem Fall können Sie, wenn Sie vermuten, dass alle Knoten in Ihrer Umgebung vom gewünschten Konfigurationsstatus abweichen, die gleiche DSC-Konfiguration erneut anwenden, um sie wieder in den gewünschten Zustand zurückzubringen. Sie müssen das Konfigurationsskript nicht so ändern, dass nur die Ressourcen adressiert werden, deren Status vom gewünschten Zustand entfernt wurde.

Das folgende Beispiel zeigt, wie Sie überprüfen können, ob der tatsächliche Konfigurationsstatus eines bestimmten Knotens von der letzten DSC-Konfiguration, die auf dem Knoten ausgeführt wurde, abgedrift wurde. In diesem Beispiel wird die Konfiguration des lokalen Computers überprüft.

$session = New-CimSession -ComputerName "localhost"
Test-DscConfiguration -CimSession $session

INTEGRIERTE DSC-RESSOURCEN

Sie können die folgenden integrierten Ressourcen in Ihren Konfigurationsskripts verwenden:

Name Eigenschaften
Datei {DestinationPath, Attributes, Checksum, Content...}
Archivieren {Ziel, Pfad, Prüfsumme, Anmeldeinformationen...}
Environment {Name, DependsOn, Sicherstellen, Pfad...}
Group {GroupName, Credential, DependsOn, Description...}
Log {Message, DependsOn, PsDscRunAsCredential}
Paket {Name, Pfad, ProductId, Argumente...}
Registrierung {Key, ValueName, DependsOn, Ensure...}
Skript {GetScript, SetScript, TestScript, Credential...}
Dienst {Name, BuiltInAccount, Credential, Abhängigkeiten...}
Benutzer {UserName, DependsOn, Description, Disabled...}
WaitForAll {NodeName, ResourceName, DependsOn, PsDscRunAsC...}
WaitForAny {NodeName, ResourceName, DependsOn, PsDscRunAsC...}
WaitForSome {NodeCount, NodeName, ResourceName, DependsOn...}
WindowsFeature {Name, Anmeldeinformationen, DependsOn, Sicherstellen...}
WindowsOptionalFeature {Name, DependsOn, Ensure, LogLevel...}
WindowsProcess {Argumente, Pfad, Anmeldeinformationen, DependsOn...}

Führen Sie das Get-DscResource Cmdlet aus, um eine Liste der verfügbaren DSC-Ressourcen auf Ihrem System abzurufen.

Hinweis

In Versionen vor PowerShell 7.0 findet Get-DscResource keine klassenbasierten DSC-Ressourcen.

Im Beispiel in diesem Thema wird die Verwendung der Datei- und WindowsFeature-Ressourcen veranschaulicht. Um alle Eigenschaften anzuzeigen, die Sie mit einer Ressource verwenden können, fügen Sie den Cursor in die Ressource Schlüsselwort (keyword) (z. B. "Datei") in Ihr Konfigurationsskript in PowerShell ISE ein, halten Sie STRG LEERTASTE+gedrückt.

WEITERE RESSOURCEN SUCHEN

Sie können viele andere verfügbare DSC-Ressourcen herunterladen, installieren und erfahren, die von der PowerShell- und DSC-Benutzercommunity und von Microsoft erstellt wurden. Besuchen Sie die PowerShell-Katalog, um die verfügbaren DSC-Ressourcen zu durchsuchen und zu erfahren.

Weitere Informationen