تحديد تبعيات عبر العقد

ينطبق على: Windows PowerShell 5.0

يوفر DSC موارد خاصة و WaitForAll و WaitForAny و WaitForSome التي يمكن استخدامها في التكوينات لتحديد التبعيات على التكوينات على العقد الأخرى. سلوك هذه الموارد كما يلي:

  • WaitForAll: ينجح إذا كان المورد المحدد في الحالة المطلوبة على جميع العقد المستهدفة المحددة في الخاصية NodeName .
  • WaitForAny: ينجح إذا كان المورد المحدد في الحالة المطلوبة على عقدة واحدة على الأقل من العقد المستهدفة المحددة في الخاصية NodeName .
  • WaitForSome: يحدد خاصية NodeCount بالإضافة إلى خاصية NodeName . ينجح المورد إذا كان المورد في الحالة المطلوبة على الحد الأدنى لعدد العقد (المحددة بواسطة NodeCount) المحددة بواسطة الخاصية NodeName .

بناء الجملة

تشترك موارد WaitForAll و WaitForAny في نفس بناء الجملة. استبدل <ResourceType> في المثال أدناه إما ب WaitForAny أو WaitForAll. مثل الكلمة الأساسية DependsOn ، ستحتاج إلى تنسيق الاسم ك [ResourceType]ResourceName. إذا كان المورد ينتمي إلى تكوين منفصل، فبادر بتضمين 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.
إعادة المحاولة الحد الأقصى لعدد مرات إعادة المحاولة.
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". تطبيق كل من ملفات "mof" على العقد الهدف باستخدام الأمر Start-DSCConfiguration cmdlet

ملاحظة

تستخدم موارد WaitForXXX إدارة Windows عن بعد للتحقق من حالة العقد الأخرى. لمزيد من المعلومات حول متطلبات المنفذ والأمان ل WinRM، راجع اعتبارات أمان الاتصال عن بعد في PowerShell.

راجع أيضاً