Delen via


about_DesiredStateConfiguration

Korte beschrijving

Biedt een korte inleiding tot de functie PowerShell Desired State Configuration (DSC).

Lange beschrijving

DSC is een beheerplatform in PowerShell dat het implementeren en beheren van configuratiegegevens voor softwareservices mogelijk maakt en de omgeving beheert waarin deze services worden uitgevoerd.

DSC biedt een set PowerShell-taalextensies, nieuwe cmdlets en resources die u kunt gebruiken om declaratief op te geven hoe u de status van uw softwareomgeving wilt configureren. Het biedt ook een middel om bestaande configuraties te onderhouden en te beheren.

DSC wordt geïntroduceerd in PowerShell 4.0.

Zie overzicht van PowerShell Desired State Configuration voor gedetailleerde informatie over DSC.

DSC-resources ontwikkelen met klassen

Vanaf PowerShell 5.0 kunt u DSC-resources ontwikkelen met behulp van klassen. Zie about_Classes en een aangepaste DSC-resource schrijven met PowerShell-klassen voor meer informatie.

DSC gebruiken

Als u DSC wilt gebruiken om uw omgeving te configureren, definieert u eerst een PowerShell-scriptblok met behulp van het trefwoord Configuratie, gevolgd door een id, gevolgd door het paar accolades die het blok scheiden. In het configuratieblok kunt u knooppuntblokken definiëren die de gewenste configuratiestatus voor elk knooppunt (computer) in de omgeving opgeven. Een knooppuntblok begint met het trefwoord Node, gevolgd door de naam van de doelcomputer, die een variabele kan zijn. Na de computernaam komen de accolades die het knooppuntblok scheiden. In het knooppuntblok kunt u resourceblokken definiëren om specifieke resources te configureren. Een resourceblok begint met de typenaam van de resource, gevolgd door de id die u voor dat blok wilt opgeven, gevolgd door de accolades die het blok scheiden, zoals wordt weergegeven in het volgende voorbeeld.

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
        }
    }
}

Als u een configuratie wilt maken, roept u het configuratieblok op dezelfde manier aan als u een PowerShell-functie aanroept en alle verwachte parameters doorgeeft die u mogelijk hebt gedefinieerd (twee in het bovenstaande voorbeeld). In dit geval bijvoorbeeld:

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

Hiermee wordt een MOF-bestand per knooppunt gegenereerd op het pad dat u opgeeft. Deze MOF-bestanden geven de gewenste configuratie voor elk knooppunt op. Gebruik vervolgens de volgende cmdlet om de MOF-configuratiebestanden te parseren, elk knooppunt de bijbehorende configuratie te verzenden en deze configuraties uit te voeren. Houd er rekening mee dat u geen afzonderlijk MOF-bestand hoeft te maken voor DSC-resources op basis van klassen.

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

DSC gebruiken om de configuratiestatus te behouden

Met DSC is de configuratie idempotent. Dit betekent dat als u DSC gebruikt om dezelfde configuratie meer dan één keer uit te voeren, de resulterende configuratiestatus altijd hetzelfde is. Als u vermoedt dat knooppunten in uw omgeving mogelijk zijn afgegaan van de gewenste configuratiestatus, kunt u dezelfde DSC-configuratie opnieuw uitvoeren om ze terug te brengen naar de gewenste status. U hoeft het configuratiescript niet te wijzigen om alleen de resources aan te pakken waarvan de status is afgelopen van de gewenste status.

In het volgende voorbeeld ziet u hoe u kunt controleren of de werkelijke status van de configuratie op een bepaald knooppunt is afgelopen van de laatste DSC-configuratie die op het knooppunt is uitgevoerd. In dit voorbeeld controleren we de configuratie van de lokale computer.

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

Ingebouwde DSC-resources

U kunt de volgende ingebouwde resources in uw configuratiescripts gebruiken:

Naam Eigenschappen
Bestand {DestinationPath, kenmerken, controlesom, inhoud...}
Archiveren {Bestemming, Pad, Controlesom, Referentie...}
Omgeving {Name, DependsOn, Ensure, Path...}
Groep {GroupName, Credential, DependsOn, Description...}
Logboek {Message, DependsOn, PsDscRunAsCredential}
Pakket {Name, Path, ProductId, Arguments...}
Register {Key, ValueName, DependsOn, Ensure...}
Script {GetScript, SetScript, TestScript, Credential...}
Service {Name, BuiltInAccount, Credential, Dependencies...}
User {UserName, DependsOn, Description, Disabled...}
WaitForAll {NodeName, ResourceName, DependsOn, PsDscRunAsC...}
WaitForAny {NodeName, ResourceName, DependsOn, PsDscRunAsC...}
WaitForSome {NodeCount, NodeName, ResourceName, DependsOn...}
WindowsFeature {Name, Credential, DependsOn, Ensure...}
WindowsOptionalFeature {Name, DependsOn, Ensure, LogLevel...}
WindowsProcess {Argumenten, pad, referentie, DependsOn...}

Voer de Get-DscResource cmdlet uit om een lijst met beschikbare DSC-resources op uw systeem op te halen.

Notitie

In PowerShell-versies onder 7.0 worden Get-DscResource geen DSC-resources op basis van klasse gevonden.

In het voorbeeld in dit onderwerp ziet u hoe u de bestands- en WindowsFeature-resources gebruikt. Als u alle eigenschappen wilt zien die u met een resource kunt gebruiken, voegt u de cursor in het trefwoord van de resource (bijvoorbeeld Bestand) in uw configuratiescript in PowerShell ISE in, houdt u Ctrl-spatiebalk+

Meer resources zoeken

U kunt veel andere beschikbare DSC-resources downloaden, installeren en leren die zijn gemaakt door de PowerShell- en DSC-gebruikerscommunity en door Microsoft. Ga naar de PowerShell Gallery om te bladeren en meer te weten te komen over beschikbare DSC-resources.

Zie ook