Указание межузловых зависимостей

Область применения: Windows PowerShell 5.0

DSC предоставляет специальные ресурсы, WaitForAll, WaitForAny и WaitForSome, которые можно использовать в конфигурациях для указания зависимостей от конфигураций на других узлах. Поведение этих ресурсов описано ниже.

  • WaitForAll — успешное выполнение, если указанный ресурс находится в нужном состоянии на всех целевых узлах, определенных в свойстве NodeName.
  • WaitForAny — успешное выполнение, если указанный ресурс находится в нужном состоянии как минимум на одном из целевых узлов, определенных в свойстве NodeName.
  • WaitForSome — указывает свойство NodeCount в дополнение к свойству NodeName. Ресурс выполняется успешно, если он находится в нужном состоянии на минимальном количестве узлов (определяется свойством NodeCount), заданных свойством NodeName.

Синтаксис

Ресурсы WaitForAll и WaitForAny используют одинаковый синтаксис. Замените <ResourceType> в примере ниже на WaitForAny или WaitForAll. Необходимо отформатировать имя как [ResourceType]ResourceName подобно ключевому слову DependsOn. Если ресурс принадлежит отдельной конфигурации, включите ConfigurationName в отформатированную строку [ResourceType]ResourceName::[ConfigurationName]::[ConfigurationName]. NodeName является компьютером или узлом, на котором ожидается текущий ресурс.

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

Ресурс WaitForSome имеет подобный приведенному выше примеру синтаксис, но содержит ключ NodeCount. Ключ NodeCount указывает количество узлов, на которых следует ожидать текущий ресурс.

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

Все ресурсы WaitForXXXX используют следующие разделы синтаксиса.

Свойство. Описание
RetryIntervalSec Количество секунд перед повторной попыткой. Минимальное значение — 1.
RetryCount Максимальное число повторных попыток.
ThrottleLimit Количество одновременно подключаемых компьютеров. Значение по умолчанию — New-CimSession.
DependsOn Указывает, что перед настройкой этого ресурса необходимо запустить настройку другого ресурса. Дополнительные сведения см. в разделе DependsOn.
PsDscRunAsCredential См. статью Запуск DSC с учетными данными пользователя.

Использование ресурсов WaitForXXXX

Каждый ресурс WaitForXXXX ожидает выполнения указанных ресурсов на указанном узле. После этого другие ресурсы в той же конфигурации могут зависеть от ресурса WaitForXXXX с помощью ключа DependsOn.

Например, в следующей конфигурации целевой узел ожидает завершения выполнения ресурса xADDomain на узле MyDC не более чем с 30 повторными попытками (с интервалом 15 секунд), прежде чем присоединиться к домену.

По умолчанию ресурсы WaitForXXX выполняют одну попытку, а затем выдают ошибку. Хотя это необязательно, обычно требуется указать RetryCount и 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'
        }
    }
}

При компиляции конфигурации создаются два MOF-файла. Примените их на целевые узлы с помощью командлета Start-DSCConfiguration

Примечание

Ресурсы WaitForXXX используют удаленное управление Windows, чтобы проверить состояние других узлов. Дополнительные сведения о требованиях к безопасности и портах для WinRM см. в разделе Вопросы обеспечения безопасности удаленного взаимодействия PowerShell.

См. также