Sdílet prostřednictvím


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 PowerShell Configuration.

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

Uložte skript jako soubor .ps1.

Syntaxe konfigurace

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

  • Konfigurační blok. Toto je vnější blok skriptu. Definujete jej 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ů uzlů . 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 Uzel může přijímat více názvů počítačů.
  • Jeden nebo více bloků prostředků. Zde 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 v počítačích se systémem Windows Server. U počítačů s klientským operačním systémem, jako je Windows 11, musíte místo toho použít WindowsOptionalFeature . Další informace naleznete v části "WindowsOptionalFeature" v dokumentaci k PSDscResources.

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

V tomto příkladu zadáte název uzlu tak, že jej při kompilaci konfigurace předáte jako parametr ComputerName . 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 Uzel 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 Uzel z konfigurace musíte použít zápis pole.

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

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

MyDscConfiguration

Kompilace konfigurace

Než budete moci provést konfiguraci, musíte ji zkompilovat do dokumentu MOF. To provedete voláním konfigurace jako při volání funkce PowerShellu. Poslední řádek příkladu, který obsahuje pouze název konfigurace, volá konfiguraci.

Poznámka:

Aby bylo možné volat konfiguraci, musí být funkce v globálním oboru (stejně jako u jakékoli jiné funkce PowerShellu). To lze provést buď pomocí "dot-sourcingu" skriptu, nebo spuštěním konfiguračního skriptu pomocí klávesy F5 nebo kliknutím na tlačítko Spustit skript v prostředí ISE. Chcete-li skript získat jako dot-source, spusťte příkaz . .\myConfig.ps1 , kde myConfig.ps1 je název souboru skriptu, který obsahuje vaši konfiguraci.

Když zavoláte konfiguraci, provede to:

  • Překládá 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 Název_uzlu.mof v novém adresáři, kde Název_uzlu 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 naleznete v tématu Zabezpečení souboru MOF.

Výsledkem kompilace první výše uvedené konfigurace je následující struktura 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řebírá parametr, jako v druhém příkladu, musí být zadán v době kompilace. Vypadalo by to takto:

. .\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 zdrojů ve vaší konfiguraci

Pokud jste spustili předchozí příklady, možná jste si všimli, že jste byli upozorněni, že jste používali prostředek bez explicitního importu. V současné době je DSC dodáván s 12 prostředky jako součást modulu PSDesiredStateConfiguration.

Rutinu Get-DscResource lze použít k určení, jaké prostředky jsou nainstalovány v systému a jsou k dispozici pro použití LCM. Jakmile jsou tyto moduly umístěny a $env:PSModulePath jsou správně rozpoznány Get-DscResource, je stále potřeba je načíst do vaší konfigurace.

Import-DscResource je dynamické klíčové slovo, které lze rozpoznat pouze v rámci konfiguračního bloku, 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 (stejně jako řetězcové pole názvů modulů).
  • Název je název prostředku, který se má importovat. Nejedná se o popisný název vrácený jako "Name" Get-DscResource, ale o název třídy použitý při definování schématu prostředku (vráceného jako ResourceType pomocí Get-DscResource).

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

Rozdíly mezi PowerShellem v4 a v5

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

Viz také