Dela via


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. Om du vill definiera en konfiguration använder du PowerShell-nyckelordskonfigurationen.

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 den med hjälp av nyckelordet Configuration och anger ett namn. I det här fallet är MyDscConfigurationnamnet på konfigurationen .
  • Ett eller flera Node-block . Dessa definierar de noder (datorer eller virtuella datorer) som du konfigurerar. I konfigurationen ovan finns det ett Node-block som riktar sig mot en dator med namnet TEST-PC1. Node-blocket kan acceptera flera datornamn.
  • Ett eller flera resursblock. Det är här konfigurationen anger egenskaperna för de resurser som konfigureras. I det här fallet finns det två resursblock, som var och en anropar WindowsFeature-resursen .

Anmärkning

WindowsFeature DSC-resursen är endast tillgänglig på Windows Server-datorer. För datorer med ett klientoperativsystem, till exempel Windows 11, måste du använda WindowsOptionalFeature i stället. Mer information finns i avsnittet "WindowsOptionalFeature" i PSDscResources-dokumentationen.

I ett konfigurationsblock kan du göra allt som du normalt kan i en PowerShell-funktion. I föregående exempel, om du inte vill hårdkoda namnet på måldatorn i konfigurationen, 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. Namnet är localhostsom standard .

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 -ComputerName parametern eller skicka en kommaavgränsad lista med datorer direkt till Node-blocket.

MyDscConfiguration -ComputerName "localhost", "Server01"

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

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. Det gör du genom att anropa konfigurationen på samma sätt som du anropar en PowerShell-funktion. Den sista raden i exemplet, som endast innehåller namnet på konfigurationen, anropar konfigurationen.

Anmärkning

Om du vill anropa en konfiguration måste funktionen vara i globalt omfång (som med andra PowerShell-funktioner). Du kan göra detta antingen genom att "punktkälla" skriptet eller genom att köra konfigurationsskriptet med hjälp av F5 eller klicka på knappen Kör skript i ISE. Om du vill punktkälla skriptet kör du kommandot . .\myConfig.ps1 where myConfig.ps1 är namnet på skriptfilen som innehåller konfigurationen.

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 i konfigurationen. Om det finns fler än en nod skapas en MOF-fil för varje nod.

Anmärkning

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

Om 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 kompileringstillfället. 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 konfigurationen

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

Cmdleten, Get-DscResource, kan användas för att avgöra vilka resurser som är installerade i systemet och tillgängliga för användning av LCM. När dessa moduler har placerats i $env:PSModulePath och har identifierats korrekt av Get-DscResource må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 accepterar namnet på modulen som innehåller de resurser som ska importeras (samt en strängmatris med modulnamn).
  • Namn är namnet på resursen som ska importeras. Det här är inte det egna namnet som returneras som "Namn" av Get-DscResource, utan klassnamnet som används när du definierar resursschemat (returneras som ResourceType av Get-DscResource).

Mer information om hur du använder Import-DSCResourcefinns i Using 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