DSC-configuratiesDSC Configurations

Van toepassing op: Windows PowerShell 4.0, Windows PowerShell 5.0Applies To: Windows PowerShell 4.0, Windows PowerShell 5.0

DSC-configuraties zijn PowerShell-scripts die een speciaal type functie definiëren.DSC configurations are PowerShell scripts that define a special type of function. Voor het definiëren van een configuratie die u gebruikt het sleutelwoord PowerShell configuratie.To define a configuration, you use the PowerShell keyword Configuration.

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

Sla het script als een ps1-bestand.Save the script as a .ps1 file.

Syntaxis van de configuratieConfiguration syntax

Een configuratiescript bestaat uit de volgende onderdelen:A configuration script consists of the following parts:

  • De configuratie blokkeren.The Configuration block. Dit is het buitenste scriptblok.This is the outermost script block. U de gegevens definiëren met behulp van de configuratie trefwoord en een naam geven.You define it by using the Configuration keyword and providing a name. In dit geval is de naam van de configuratie 'MyDscConfiguration'.In this case, the name of the configuration is "MyDscConfiguration".
  • Een of meer knooppunt blokken.One or more Node blocks. Dit definieert de knooppunten (computers of virtuele machines) die u wilt configureren.These define the nodes (computers or VMs) that you are configuring. In de bovenstaande configuratie, er is een knooppunt blokkeren die gericht is op een computer met de naam 'TEST-PC1'.In the above configuration, there is one Node block that targets a computer named "TEST-PC1".
  • Een of meer resource-blokken.One or more resource blocks. Dit is waar de eigenschappen voor de resources waarmee deze wordt geconfigureerd in de configuratie wordt ingesteld.This is where the configuration sets the properties for the resources that it is configuring. In dit geval zijn er twee blokken van de resource, die elk de resource "WindowsFeature" aanroepen.In this case, there are two resource blocks, each of which call the "WindowsFeature" resource.

Binnen een configuratie blokkeren, kunt u alles wat u normaal gesproken in een PowerShell-functie kan doen.Within a Configuration block, you can do anything that you normally could in a PowerShell function. Bijvoorbeeld, in het vorige voorbeeld, kan als u niet wilt harde code de naam van de doelcomputer in de configuratie u toevoegen een parameter voor de naam van het knooppunt:For example, in the previous example, if you didn't want to hard code the name of the target computer in the configuration, you could add a parameter for the node name:

Configuration MyDscConfiguration {
    param(
        [string[]]$ComputerName='localhost'
    )
    Node $ComputerName {
        WindowsFeature MyFeatureInstance {
            Ensure = 'Present'
            Name = 'RSAT'
        }
        WindowsFeature My2ndFeatureInstance {
            Ensure = 'Present'
            Name = 'Bitlocker'
        }
    }
}
MyDscConfiguration -ComputerName $ComputerName

In dit voorbeeld, geeft u de naam van het knooppunt door door te geven als de ComputerName parameter wanneer u de configuratie compileren.In this example, you specify the name of the node by passing it as the ComputerName parameter when you compile the configuration. De naam van de standaardwaarde is "localhost".The name defaults to "localhost".

De configuratie compilerenCompiling the configuration

Voordat u kunt een configuratie gerapporteerd, moet u tijdens het compileren in een MOF-document.Before you can enact a configuration, you have to compile it into a MOF document. U doen dit door het aanroepen van de configuratie, zoals u zou een PowerShell-functie aanroepen.You do this by calling the configuration like you would call a PowerShell function. De laatste regel van het voorbeeld met alleen de naam van de configuratie, roept de configuratie.The last line of the example containing only the name of the configuration, calls the configuration.

Notitie

Voor het aanroepen van een configuratie, moet de functie in het globale bereik (net als bij een andere PowerShell-functie).To call a configuration, the function must be in global scope (as with any other PowerShell function). Kunt u dit laten gebeuren ofwel door "dotsourcing" het script, of door het uitvoeren van het configuratiescript met F5 of door te klikken op de -Script uitvoeren knop in de ISE.You can make this happen either by "dot-sourcing" the script, or by running the configuration script by using F5 or clicking on the Run Script button in the ISE. Het script dot-bron, voert u de opdracht . .\myConfig.ps1 waar myConfig.ps1 is de naam van het scriptbestand waarmee de configuratie bevat.To dot-source the script, run the command . .\myConfig.ps1 where myConfig.ps1 is the name of the script file that contains your configuration.

Bij het aanroepen van de configuratie, het:When you call the configuration, it:

  • Oplossing voor alle variabelenResolves all variables
  • Hiermee maakt een map in de huidige map met dezelfde naam als de configuratie.Creates a folder in the current directory with the same name as the configuration.
  • Hiermee maakt u een bestand met de naam knooppuntnaam.mof in de nieuwe map waar knooppuntnaam is de naam van het doelknooppunt van de configuratie.Creates a file named NodeName.mof in the new directory, where NodeName is the name of the target node of the configuration. Als er meer dan één knooppunten zijn, wordt een MOF-bestand worden gemaakt voor elk knooppunt.If there are more than one nodes, a MOF file will be created for each node.

Notitie

Het MOF-bestand bevat alle van de configuratie-informatie voor het doelknooppunt.The MOF file contains all of the configuration information for the target node. Als gevolg hiervan is het belangrijk om veilig te houden.Because of this, it’s important to keep it secure. Zie voor meer informatie, beveiligen van het MOF-bestand.For more information, see Securing the MOF file.

Compileren van de eerste configuratie boven resultaten in de volgende mapstructuur:Compiling the first configuration above results in the following folder structure:

. .\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

Als de configuratie heeft een parameter, zoals in het tweede voorbeeld nodig heeft om te worden opgegeven bij het compileren.If the configuration takes a parameter, as in the second example, that has to be provided at compile time. Hier ziet u dat zou als volgt uitzien:Here's how that would look:

. .\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

Met behulp van DependsOnUsing DependsOn

Een nuttig DSC-sleutelwoord is DependsOn.A useful DSC keyword is DependsOn. Normaal (maar niet altijd), DSC van de resources in de volgorde waarin ze worden weergegeven in de configuratie van de toepassing.Typically (though not necessarily always), DSC applies the resources in the order that they appear within the configuration. Echter, DependsOn geeft aan welk resources afhankelijk zijn van andere bronnen en de LCM zorgt ervoor dat ze worden toegepast in de juiste volgorde, ongeacht de volgorde in welke resource exemplaren zijn gedefinieerd.However, DependsOn specifies which resources depend on other resources, and the LCM ensures that they are applied in the correct order, regardless of the order in which resource instances are defined. Bijvoorbeeld, een configuratie kunt opgeven dat een exemplaar van de gebruiker bron, is afhankelijk van de aanwezigheid van een groep exemplaar:For example, a configuration might specify that an instance of the User resource depends on the existence of a Group instance:

Configuration DependsOnExample {
    Node Test-PC1 {
        Group GroupExample {
            Ensure = 'Present'
            GroupName = 'TestGroup'
        }

        User UserExample {
            Ensure = 'Present'
            UserName = 'TestUser'
            FullName = 'TestUser'
            DependsOn = '[Group]GroupExample'
        }
    }
}

Met behulp van nieuwe resources in uw configuratieUsing new resources in Your configuration

Als u de vorige voorbeelden hebt uitgevoerd, u mogelijk opgevallen dat u zijn gewaarschuwd dat u een resource zonder expliciet importeren gebruikten.If you ran the previous examples, you might have noticed that you were warned that you were using a resource without explicitly importing it. DSC wordt nu geleverd met 12 resources als onderdeel van de module PSDesiredStateConfiguration.Today, DSC ships with 12 resources as part of the PSDesiredStateConfiguration module. Andere bronnen in externe modules moeten worden geplaatst $env:PSModulePath om te kunnen worden herkend door de LCM.Other resources in external modules must be placed in $env:PSModulePath in order to be recognized by the LCM. Een nieuwe cmdlet sleutelwoorden Get-dscresource bieden, kan worden gebruikt om te bepalen welke resources zijn geïnstalleerd op het systeem en beschikbaar zijn voor gebruik door de LCM.A new cmdlet, Get-DscResource, can be used to determine what resources are installed on the system and available for use by the LCM. Zodra deze modules zijn geplaatst $env:PSModulePath en goed worden herkend door sleutelwoorden Get-dscresource bieden, ze nog steeds nodig om te worden geladen in uw configuratie.Once these modules have been placed in $env:PSModulePath and are properly recognized by Get-DscResource, they still need to be loaded within your configuration. Sleutelwoorden import-dscresource bieden is een dynamische trefwoord dat alleen kan worden herkend binnen een configuratie blokkeren (dat wil zeggen het is niet een cmdlet).Import-DscResource is a dynamic keyword that can only be recognized within a Configuration block (i.e. it is not a cmdlet). Sleutelwoorden import-dscresource bieden ondersteunt twee parameters:Import-DscResource supports two parameters:

  • ModuleName is de aanbevolen manier voor het gebruik van sleutelwoorden Import-dscresource bieden.ModuleName is the recommended way of using Import-DscResource. De naam van de module met de resources die worden geïmporteerd (evenals een string-matrix van modulenamen) worden geaccepteerd.It accepts the name of the module that contains the resources to be imported (as well as a string array of module names).
  • Naam is de naam van de resource te importeren.Name is the name of the resource to import. Dit is niet de beschrijvende naam die wordt geretourneerd als "Naam" door sleutelwoorden Get-dscresource bieden, maar de naam van de klasse die wordt gebruikt wanneer de resource-schema definiëren (geretourneerd als ResourceType door Get-sleutelwoorden dscresource bieden).This is not the friendly name returned as "Name" by Get-DscResource, but the class name used when defining the resource schema (returned as ResourceType by Get-DscResource).

Zie ookSee Also