Konfigurace DSC

Platí pro: Windows PowerShell 4.0, Windows PowerShell 5.0

Konfigurace DSC jsou skripty PowerShellu, které definují speciální typ funkce. K definování konfigurace použijete klíčové slovo PowerShellu Configuration.

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

Uložte skript jako .ps1 soubor.

Syntaxe konfigurace

Konfigurační skript se skládá z následujících částí:

  • Blok konfigurace . Toto je nejkrajnější blok skriptu. Definujete ho pomocí klíčového slova Configuration a zadáním názvu. V tomto případě je MyDscConfigurationnázev konfigurace .
  • Jeden nebo více bloků uzlu . Ty definují uzly (počítače nebo virtuální počítače), které konfigurujete. Ve výše uvedené konfiguraci existuje jeden blok uzlu , který cílí na počítač s názvem TEST-PC1. Blok uzlu může přijímat více názvů počítačů.
  • Jeden nebo více bloků prostředků. Tady konfigurace nastavuje vlastnosti pro prostředky, které konfiguruje. V tomto případě existují dva bloky prostředků, z nichž každý volá prostředek WindowsFeature .

Poznámka

Prostředek WindowsFeature DSC je k dispozici pouze na počítačích s Windows Serverem. Pro počítače s klientským operačním systémem, jako je Windows 11, musíte místo toho použít WindowsOptionalFeature. Další informace najdete v části WindowsOptionalFeature v dokumentaci PSDscResources.

V rámci bloku konfigurace můžete ve funkci PowerShellu dělat cokoliv, co byste normálně mohli. Pokud jste v předchozím příkladu nechtěli pevně zakódovat název cílového počítače v konfiguraci, mohli byste přidat parametr pro název uzlu.

V tomto příkladu zadáte název uzlu tak, že ho předáte jako parametr ComputerName při kompilaci konfigurace. Výchozí název je localhost.

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

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

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

MyDscConfiguration

Blok uzlu může také přijímat více názvů počítačů. Ve výše uvedeném příkladu můžete buď použít -ComputerName parametr, nebo předat čárkami oddělený seznam počítačů přímo do bloku Node .

MyDscConfiguration -ComputerName "localhost", "Server01"

Při zadávání seznamu počítačů do bloku uzlu musíte v rámci konfigurace použít maticovou notaci.

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

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

MyDscConfiguration

Kompilace konfigurace

Než budete moct provést konfiguraci, musíte ji zkompilovat do dokumentu MOF. Provedete to voláním konfigurace, jako byste volali funkci PowerShellu. Poslední řádek příkladu, který obsahuje pouze název konfigurace, volá konfiguraci.

Poznámka

Pokud chcete volat konfiguraci, musí být funkce v globálním rozsahu (stejně jako u jakékoli jiné funkce PowerShellu). Můžete to provést buď pomocí skriptu "dot-sourcing", nebo spuštěním konfiguračního skriptu pomocí klávesy F5 nebo kliknutím na tlačítko Spustit skript v ISE. Pokud chcete skript dot-source, spusťte příkaz . .\myConfig.ps1 , kde myConfig.ps1 je název souboru skriptu, který obsahuje vaši konfiguraci.

Při volání konfigurace:

  • Řeší všechny proměnné.
  • Vytvoří složku v aktuálním adresáři se stejným názvem jako konfigurace.
  • Vytvoří soubor s názvem NodeName.mof v novém adresáři, kde NodeName je název cílového uzlu konfigurace. Pokud existuje více než jeden uzel, vytvoří se pro každý uzel soubor MOF.

Poznámka

Soubor MOF obsahuje všechny informace o konfiguraci cílového uzlu. Z tohoto důvodu je důležité ho zabezpečit. Další informace najdete v tématu Zabezpečení souboru MOF.

Kompilace první konfigurace výše má za následek následující strukturu složek:

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

Pokud konfigurace přijímá parametr, jako v druhém příkladu, který musí být poskytnut v době kompilace. Takto by to vypadalo:

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

Použití nových prostředků ve vaší konfiguraci

Pokud jste spustili předchozí příklady, možná jste si všimli, že jste byli upozorněni, že používáte prostředek, aniž byste ho explicitně importovali. V současnosti se DSC dodává s 12 prostředky v rámci modulu PSDesiredStateConfiguration.

Pomocí rutiny Get-DscResource můžete určit, jaké prostředky jsou nainstalované v systému a dostupné pro použití nástrojem LCM. Jakmile jsou tyto moduly umístěny v $env:PSModulePath a jsou správně rozpoznány get-DscResource, musí být stále načteny v rámci vaší konfigurace.

Import-DscResource je dynamické klíčové slovo, které lze rozpoznat pouze v rámci bloku konfigurace , nejedná se o rutinu. Import-DscResource podporuje dva parametry:

  • ModuleName je doporučený způsob použití Import-DscResource. Přijímá název modulu, který obsahuje prostředky, které se mají importovat (a pole řetězců s názvy modulů).
  • Název je název prostředku, který se má importovat. Toto není popisný název vrácený jako "Název" get-DscResource, ale název třídy použitý při definování schématu prostředku (vrácen jako ResourceTypeGet-DscResource).

Další informace o používání Import-DSCResourcenajdete v tématu Použití Import-DSCResource.

Rozdíly v PowerShellu v4 a v5

Existují rozdíly v tom, kde je potřeba ukládat prostředky DSC v PowerShellu 4.0. Další informace najdete v tématu Umístění prostředku.

Viz také