DSC-Ressourcen

Gilt für Windows PowerShell 4.0 und höher.

Übersicht

DSC-Ressourcen sind die Bausteine einer DSC-Konfiguration. Eine Ressource macht Eigenschaften verfügbar, die konfiguriert werden können (Schema), und enthält die PowerShell-Skriptfunktionen, die der lokale Konfigurations-Manager wie gewünscht ausführt.

Mit einer Ressource kann etwas Allgemeines wie eine Datei oder Spezifisches wie eine IIS-Servereinstellung modelliert werden. Gruppen ähnlicher Ressourcen werden in einem DSC-Modul kombiniert, das alle erforderlichen Dateien in einer Struktur organisiert, die portierbar ist und Metadaten zum Bestimmen des Zwecks der Ressourcen enthält.

Jede Ressource verfügt über ein *schema, das die Syntax bestimmt, die für die Verwendung der Ressource in einer Konfiguration erforderlich ist. Das Schema einer Ressource kann auf folgende Weise definiert werden:

  • Schema.Mof-Datei: Die meisten Ressourcen definieren ihr Schema mithilfe des Managed Object Format (MOF) in der Datei schema.mof.
  • <Resource Name>.schema.psm1-Datei: Zusammengesetzte Ressourcen definieren ihr Schema in einer Datei <ResourceName>.schema.psm1 unter Verwendung eines Parameterblocks.
  • <Resource Name>.psm1-Datei: Klassenbasierte DSC-Ressourcen definieren ihr Schema in der Klassendefinition. Syntaxelemente werden als Eigenschaften der Klasse angegeben. Weitere Informationen finden Sie unter about_Classes.

Verwenden Sie zum Abrufen der Syntax für eine DSC-Ressource das Cmdlet Get-DSCResource mit dem Parameter Syntax. Dieser Vorgang ähnelt der Verwendung von Get-Command mit dem Parameter Syntax, um die Cmdlet-Syntax abzurufen. Die Ausgabe, die Sie sehen, zeigt die Vorlage für einen Ressourcenblock für die Ressource an, die Sie angeben.

Get-DscResource -Syntax Service

Die Ausgabe, die Sie sehen, sollte der folgenden Ausgabe ähneln, obwohl sich die Syntax dieser Ressource in Zukunft ändern kann. Wie bei der Cmdlet-Syntax sind die Schlüssel in eckigen Klammern optional. Die Typen geben den Typ der Daten an, die jeder Schlüssel erwartet.

Hinweis

Der Schlüssel Ensure ist optional, da er standardmäßig auf „Present“ (Vorhanden) festgelegt ist.

Service [String] #ResourceName
{
    Name = [string]
    [BuiltInAccount = [string]{ LocalService | LocalSystem | NetworkService }]
    [Credential = [PSCredential]]
    [Dependencies = [string[]]]
    [DependsOn = [string[]]]
    [Description = [string]]
    [DisplayName = [string]]
    [Ensure = [string]{ Absent | Present }]
    [Path = [string]]
    [PsDscRunAsCredential = [PSCredential]]
    [StartupType = [string]{ Automatic | Disabled | Manual }]
    [State = [string]{ Running | Stopped }]
}

Hinweis

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

Innerhalb einer Konfiguration könnte ein Service-Ressourcenblock wie folgt aussehen, um sicherzustellen (Ensure), dass der Spoolerdienst ausgeführt wird.

Hinweis

Bevor Sie eine Ressource in einer Konfiguration verwenden, müssen Sie sie mit Import-DSCResource importieren.

Configuration TestConfig
{
    # It is best practice to always directly import resources, even if the
    # resource is a built-in resource.
    Import-DSCResource -Name Service
    Node localhost
    {
        # The name of this resource block, can be anything you choose, as l
        # ong as it is of type [String] as indicated by the schema.
        Service "Spooler - Running"
        {
            Name = "Spooler"
            State = "Running"
        }
    }
}

Konfigurationen können mehrere Instanzen desselben Ressourcentyps enthalten. Jede Instanz muss eindeutig benannt sein. Im folgenden Beispiel wird ein zweiter Service-Ressourcenblock zum Konfigurieren des „DHCP“-Diensts hinzugefügt.

Configuration TestConfig
{
    # It is best practice to always directly import resources, even if the
    # resource is a built-in resource.
    Import-DSCResource -Name Service
    Node localhost
    {
        # The name of this resource block, can be anything you choose, as
        # long as it is of type [String] as indicated by the schema.
        Service "Spooler - Running"
        {
            Name = "Spooler"
            State = "Running"
        }

        # To configure a second service resource block, add another Service
        # resource block and use a unique name.
        Service "DHCP - Running"
        {
            Name = "DHCP"
            State = "Running"
        }
    }
}

Hinweis

Ab PowerShell 5.0 wurde IntelliSense für DSC hinzugefügt. Dieses neue Feature ermöglicht Ihnen, TAB-TASTE und STRG+LEERTASTE zum automatischen Vervollständigen von Schlüsselnamen zu verwenden.

IntelliSense für Ressourcen mithilfe der Vervollständigung mit der TAB-TASTE

Ressourcentypen

Windows bietet integrierte Ressourcen, Linux betriebssystemspezifische Ressourcen. Es gibt Ressourcen für knotenübergreifende Abhängigkeiten, Ressourcen für die Paketverwaltung sowie von der Community bereitgestellte und gepflegte Ressourcen. Mit den oben genannten Schritten können Sie die Syntax dieser Ressourcen und deren Verwendung festlegen. Die Seiten, die diese Ressourcen verarbeiten, wurden unter Reference archiviert.

Integrierte Windows-Ressourcen

Ressourcen mit knotenübergreifenden Abhängigkeiten

Paketverwaltungsressourcen

Linux-Ressourcen