Udostępnij przez


Określanie zależności między węzłami

Dotyczy: Windows PowerShell 5.0

DSC udostępnia specjalne zasoby, WaitForAll, WaitForAny i WaitForSome , które mogą być używane w konfiguracjach do określania zależności od konfiguracji w innych węzłach. Zachowanie tych zasobów jest następujące:

  • WaitForAll: powodzenie się, jeśli określony zasób jest w żądanym stanie we wszystkich węzłach docelowych zdefiniowanych we właściwości NodeName .
  • WaitForAny: powodzenie się, jeśli określony zasób jest w żądanym stanie w co najmniej jednym z węzłów docelowych zdefiniowanych we właściwości NodeName .
  • WaitForSome: określa właściwość NodeCount oprócz właściwości NodeName . Zasób zakończy się pomyślnie, jeśli zasób jest w żądanym stanie na minimalnej liczbie węzłów (określonej przez NodeCount) zdefiniowanej przez właściwość NodeName .

Składnia

Zasoby WaitForAll i WaitForAny mają tę samą składnię. Zamień <ResourceType> w poniższym przykładzie na WaitForAny lub WaitForAll. Podobnie jak w przypadku słowa kluczowego DependsOn , należy sformatować nazwę jako [ResourceType]ResourceName. Jeśli zasób należy do oddzielnej konfiguracji, dołącz ConfigurationName w sformatowanym ciągu [ResourceType]ResourceName::[ConfigurationName]::[ConfigurationName]. NazwaWęzła to komputer lub węzeł, na którym powinien oczekiwać bieżący zasób.

<ResourceType> [string] #ResourceName
{
    ResourceName = [string]
    NodeName = [string]
    [ DependsOn = [string[]] ]
    [ PsDscRunAsCredential = [PSCredential]]
    [ RetryCount = [Uint32] ]
    [ RetryIntervalSec = [Uint64] ]
    [ ThrottleLimit = [Uint32]]
}

Zasób WaitForSome ma podobną składnię do powyższego przykładu, ale dodaje klucz NodeCount. NodeCount wskazuje, na ile węzłów powinien czekać bieżący zasób.

WaitForSome [String] #ResourceName
{
    NodeCount = [UInt32]
    NodeName = [string[]]
    ResourceName = [string]
    [DependsOn = [string[]]]
    [PsDscRunAsCredential = [PSCredential]]
    [RetryCount = [UInt32]]
    [RetryIntervalSec = [UInt64]]
    [ThrottleLimit = [UInt32]]
}

Wszystkie WaitForXXXX współużytkują następujące klucze składni.

Majątek Description
RetryIntervalSec Liczba sekund przed ponowieniem próby. Wartość minimalna to 1.
RetryCount Maksymalna liczba ponownych prób.
Limit przepustnicy Liczba maszyn do jednoczesnego podłączenia. Wartość domyślna to New-CimSession wartość domyślna.
ZależyOn Wskazuje, że konfiguracja innego zasobu musi zostać uruchomiona przed skonfigurowaniem tego zasobu. Aby uzyskać więcej informacji, zobacz DependsOn
PsDscRunAsCredential Zobacz Korzystanie z DSC z poświadczeniami użytkownika

Korzystanie z zasobów WaitForXXXX

Każdy zasób WaitForXXXX czeka na zakończenie określonych zasobów w określonym węźle. Inne zasoby w tej samej konfiguracji mogą następnie zależeć od zasobu WaitForXXXX przy użyciu klucza DependsOn .

Na przykład w poniższej konfiguracji węzeł docelowy czeka na zakończenie zasobu xADDomain w węźle MyDC z maksymalną liczbą 30 ponownych prób w odstępach 15-sekundowych, zanim węzeł docelowy będzie mógł dołączyć do domeny.

Domyślnie zasoby WaitForXXX próbują jeden raz, a następnie kończą się niepowodzeniem. Chociaż nie jest to wymagane, zazwyczaj należy określić RetryCount i RetryIntervalSec.

Configuration JoinDomain
{
    Import-DSCResource -ModuleName xComputerManagement, xActiveDirectory

    Node myDC
    {
        WindowsFeature InstallAD
        {
            Ensure = 'Present'
            Name = 'AD-Domain-Services'
        }

        xADDomain NewDomain
        {
            DomainName = 'Contoso.com'
            DomainAdministratorCredential = (Get-Credential)
            SafemodeAdministratorPassword = (Get-Credential)
            DatabasePath = "C:\Windows\NTDS"
            LogPath = "C:\Windows\NTDS"
            SysvolPath = "C:\Windows\Sysvol"
        }
    }

    Node myDomainJoinedServer
    {
        WaitForAll DC
        {
            ResourceName      = '[xADDomain]NewDomain'
            NodeName          = 'MyDC'
            RetryIntervalSec  = 15
            RetryCount        = 30
        }

        xComputer JoinDomain
        {
            Name             = 'myPC'
            DomainName       = 'Contoso.com'
            Credential       = (Get-Credential)
            DependsOn        ='[WaitForAll]DC'
        }
    }
}

Podczas kompilowania konfiguracji generowane są dwa pliki ".mof". Zastosuj oba pliki ".mof" do węzłów docelowych przy użyciu polecenia cmdlet Start-DSCConfiguration

Uwaga / Notatka

Zasoby WaitForXXX używają zdalnego zarządzania systemem Windows do sprawdzania stanu innych węzłów. Aby uzyskać więcej informacji na temat wymagań dotyczących portów i zabezpieczeń dla usługi WinRM, zobacz Zagadnienia dotyczące zabezpieczeń komunikacji zdalnej programu PowerShell.

Zobacz też