DSC-konfigurationer

Gäller för: Windows PowerShell 4.0, Windows PowerShell 5.0

DSC-konfigurationer är PowerShell-skript som definierar en särskild typ av funktion. Du definierar en konfiguration med hjälp av PowerShell-nyckelordet Configuration.

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

Spara skriptet som en .ps1 fil.

Konfigurationssyntax

Ett konfigurationsskript består av följande delar:

  • Konfigurationsblocket. Det här är det yttersta skriptblocket. Du definierar det med hjälp av nyckelordet Konfiguration och anger ett namn. I det här fallet är namnet på konfigurationen "MyDscConfiguration".
  • Ett eller flera nodblock. Dessa definierar de noder (datorer eller virtuella datorer) som du konfigurerar. I konfigurationen ovan finns det ett Nodblock som riktar sig mot en dator med namnet "TEST-PC1". Node-blocket kan acceptera flera datornamn.
  • Ett eller flera resursblock. Det är här som konfigurationen anger egenskaperna för de resurser som den konfigurerar. I det här fallet finns det två resursblock som vart och ett anropar resursen "WindowsFeature".

I ett konfigurationsblock kan du göra allt som du normalt kan göra i en PowerShell-funktion. Om du till exempel inte vill hårdkoda namnet på måldatorn i konfigurationen i föregående exempel kan du lägga till en parameter för nodnamnet:

I det här exemplet anger du namnet på noden genom att skicka den som parametern ComputerName när du kompilerar konfigurationen. Standardnamnet är "localhost".

Configuration MyDscConfiguration
{
    param
    (
        [string[]]$ComputerName='localhost'
    )

    Node $ComputerName
    {
        WindowsFeature MyFeatureInstance
        {
            Ensure = 'Present'
            Name = 'RSAT'
        }

        WindowsFeature My2ndFeatureInstance
        {
            Ensure = 'Present'
            Name = 'Bitlocker'
        }
    }
}

MyDscConfiguration

Node-blocket kan också acceptera flera datornamn. I exemplet ovan kan du antingen använda parametern eller skicka en -ComputerName kommaavgränsad lista med datorer direkt till Node-blocket.

MyDscConfiguration -ComputerName "localhost", "Server01"

När du anger en lista över datorer till Node-blocket måste du använda matris notation från en konfiguration.

Configuration MyDscConfiguration
{
    Node @('localhost', 'Server01')
    {
        WindowsFeature MyFeatureInstance
        {
            Ensure = 'Present'
            Name = 'RSAT'
        }

        WindowsFeature My2ndFeatureInstance
        {
            Ensure = 'Present'
            Name = 'Bitlocker'
        }
    }
}

MyDscConfiguration

Kompilera konfigurationen

Innan du kan använda en konfiguration måste du kompilera den till ett MOF-dokument. Du gör detta genom att anropa konfigurationen på samma sätt som du anropar en PowerShell-funktion. Den sista raden i exemplet som bara innehåller namnet på konfigurationen anropar konfigurationen.

Anteckning

Om du vill anropa en konfiguration måste funktionen finnas i globalt omfång (som med andra PowerShell-funktioner). Du kan göra detta antingen genom att "dot-sourcing" skriptet eller genom att köra konfigurationsskriptet med F5 eller genom att klicka på knappen Kör skript i ISE. Kör kommandot där är namnet på skriptfilen som innehåller din konfiguration för att punkt-källa . .\myConfig.ps1 myConfig.ps1 skriptet.

När du anropar konfigurationen gör den följande:

  • Löser alla variabler
  • Skapar en mapp i den aktuella katalogen med samma namn som konfigurationen.
  • Skapar en fil med namnet NodeName.mof i den nya katalogen, där NodeName är namnet på målnoden för konfigurationen. Om det finns fler än en nod skapas en MOF-fil för varje nod.

Anteckning

MOF-filen innehåller all konfigurationsinformation för målnoden. Därför är det viktigt att hålla det säkert. Mer information finns i Skydda MOF-filen.

När du kompilerar den första konfigurationen ovan resulterar det i följande mappstruktur:

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

Om konfigurationen tar en parameter, som i det andra exemplet, måste den anges vid kompileringen. Så här skulle det se ut:

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

Använda nya resurser i din konfiguration

Om du körde föregående exempel kanske du har märkt att du har fått en varning om att du använder en resurs utan att uttryckligen importera den. I dag levereras DSC med 12 resurser som en del av PSDesiredStateConfiguration-modulen.

Cmdleten Get-DscResourcekan användas för att avgöra vilka resurser som är installerade på systemet och tillgängliga för användning av LCM. När dessa moduler har placerats i och identifieras korrekt av $env:PSModulePath Get-DscResourcemåste de fortfarande läsas in i konfigurationen.

Import-DscResource är ett dynamiskt nyckelord som bara kan identifieras i ett konfigurationsblock, det är inte en cmdlet. Import-DscResource stöder två parametrar:

  • ModuleName är det rekommenderade sättet att använda Import-DscResource . Den godkänner namnet på modulen som innehåller de resurser som ska importeras (samt en strängmatris med modulnamn).
  • Namnet är namnet på resursen som ska importeras. Det här är inte det egna namnet som returneras som "Name" av Get-DscResource, utan klassnamnet som används när du definierar resursschemat (returneras som ResourceType av Get-DscResource).

Mer information om hur du Import-DSCResource använder finns i Använda Import-DSCResource

Skillnader mellan PowerShell v4 och v5

Det finns skillnader i var DSC-resurser måste lagras i PowerShell 4.0. Mer information finns i Resursplats.

Se även