Konfiguracje DSC

Dotyczy: Windows PowerShell 4.0, Windows PowerShell 5.0

Konfiguracje DSC to skrypty programu PowerShell definiujące specjalny typ funkcji. Aby zdefiniować konfigurację, należy użyć słowa kluczowego Konfiguracja programu PowerShell.

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

Zapisz skrypt jako .ps1 plik.

Składnia konfiguracji

Skrypt konfiguracji składa się z następujących części:

  • Blok Konfiguracja . Jest to najbardziej zewnętrzny blok skryptu. Można ją zdefiniować przy użyciu słowa kluczowego Configuration i podać nazwę. W takim przypadku nazwa konfiguracji to MyDscConfiguration.
  • Co najmniej jeden blok węzła . Definiują one konfigurowane węzły (komputery lub maszyny wirtualne). W powyższej konfiguracji istnieje jeden blok węzła , który jest przeznaczony dla komputera o nazwie TEST-PC1. Blok Node może akceptować wiele nazw komputerów.
  • Co najmniej jeden blok zasobów. W tym miejscu konfiguracja ustawia właściwości konfigurowanych zasobów. W tym przypadku istnieją dwa bloki zasobów, z których każdy wywołuje zasób WindowsFeature .

Uwaga

Zasób DSC windowsFeature jest dostępny tylko na komputerach z systemem Windows Server. W przypadku komputerów z systemem operacyjnym klienta, na przykład Windows 11, należy zamiast tego użyć funkcji WindowsOptionalFeature. Aby uzyskać więcej informacji, zobacz sekcję "WindowsOptionalFeature" w dokumentacji psDscResources.

W bloku Konfiguracja można wykonać dowolne czynności, które normalnie można wykonać w funkcji programu PowerShell. W poprzednim przykładzie, jeśli nie chcesz trwale kodować nazwy komputera docelowego w konfiguracji, możesz dodać parametr nazwy węzła.

W tym przykładzie należy określić nazwę węzła, przekazując go jako parametr ComputerName podczas kompilowania konfiguracji. Nazwa jest domyślnie ustawiona na localhost.

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

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

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

MyDscConfiguration

Blok Node może również akceptować wiele nazw komputerów. W powyższym przykładzie można użyć parametru -ComputerName lub przekazać rozdzielaną przecinkami listę komputerów bezpośrednio do bloku Node .

MyDscConfiguration -ComputerName "localhost", "Server01"

Podczas określania listy komputerów do bloku Node z poziomu konfiguracji należy użyć notacji tablicowej.

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

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

MyDscConfiguration

Kompilowanie konfiguracji

Zanim będzie można wprowadzić konfigurację, należy ją skompilować w dokumencie MOF. W tym celu należy wywołać konfigurację tak, jak wywołasz funkcję programu PowerShell. Ostatni wiersz przykładu zawierający tylko nazwę konfiguracji, wywołuje konfigurację.

Uwaga

Aby wywołać konfigurację, funkcja musi znajdować się w zakresie globalnym (podobnie jak w przypadku dowolnej innej funkcji programu PowerShell). Można to zrobić za pomocą skryptu "dot-sourcing" lub uruchamiając skrypt konfiguracji za pomocą klawisza F5 lub klikając przycisk Uruchom skrypt w środowisku ISE. Aby dot-source skryptu, uruchom polecenie . .\myConfig.ps1 , gdzie myConfig.ps1 jest nazwą pliku skryptu, który zawiera konfigurację.

Po wywołaniu konfiguracji:

  • Rozwiązuje wszystkie zmienne
  • Tworzy folder w bieżącym katalogu o takiej samej nazwie jak konfiguracja.
  • Tworzy plik o nazwie NodeName.mof w nowym katalogu, gdzie NodeName jest nazwą węzła docelowego konfiguracji. Jeśli istnieje więcej niż jeden węzeł, zostanie utworzony plik MOF dla każdego węzła.

Uwaga

Plik MOF zawiera wszystkie informacje o konfiguracji węzła docelowego. Z tego powodu ważne jest, aby zachować bezpieczeństwo. Aby uzyskać więcej informacji, zobacz Zabezpieczanie pliku MOF.

Skompilowanie pierwszej konfiguracji powyżej powoduje następującą strukturę folderów:

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

Jeśli konfiguracja przyjmuje parametr, tak jak w drugim przykładzie, musi to być podane w czasie kompilacji. Oto jak to wygląda:

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

Korzystanie z nowych zasobów w konfiguracji

Jeśli uruchomiono poprzednie przykłady, być może zauważysz, że używasz zasobu bez jawnego importowania go. Obecnie rozszerzenie DSC jest dostarczane z 12 zasobami w ramach modułu PSDesiredStateConfiguration.

Polecenie cmdlet Get-DscResource może służyć do określenia, jakie zasoby są zainstalowane w systemie i które są dostępne do użycia przez LCM. Po umieszczeniu tych modułów i $env:PSModulePath ich prawidłowym rozpoznaniu przez polecenie Get-DscResource nadal muszą zostać załadowane w ramach konfiguracji.

Import-DscResource to dynamiczne słowo kluczowe, które można rozpoznać tylko w bloku konfiguracji , nie jest to polecenie cmdlet. Polecenie Import-DscResource obsługuje dwa parametry:

  • ModuleName to zalecany sposób używania polecenia Import-DscResource. Akceptuje on nazwę modułu, który zawiera zasoby do zaimportowania (a także tablicę ciągów nazw modułów).
  • Nazwa to nazwa zasobu do zaimportowania. Nie jest to przyjazna nazwa zwracana jako "Name" przez polecenie Get-DscResource, ale nazwa klasy używana podczas definiowania schematu zasobu (zwrócona jako ResourceType przez Get-DscResource).

Aby uzyskać więcej informacji na temat korzystania z usługi Import-DSCResource, zobacz Using Import-DSCResource (Używanie polecenia Import-DSCResource)

Różnice w programie PowerShell w wersji 4 i w wersji 5

Istnieją różnice w tym, gdzie zasoby DSC muszą być przechowywane w programie PowerShell 4.0. Aby uzyskać więcej informacji, zobacz Lokalizacja zasobu.

Zobacz też