Ange beroenden mellan noder
Gäller för: Windows PowerShell 5.0
DSC tillhandahåller särskilda resurser, WaitForAll, WaitForAny och WaitForSome som kan användas i konfigurationer för att ange beroenden för konfigurationer på andra noder. Beteendet för dessa resurser är följande:
- WaitForAll: Lyckas om den angivna resursen är i önskat tillstånd på alla målnoder som definierats i egenskapen NodeName .
- WaitForAny: Lyckas om den angivna resursen är i önskat tillstånd på minst en av de målnoder som definierats i egenskapen NodeName .
- WaitForSome: Anger en NodeCount-egenskap utöver en NodeName-egenskap . Resursen lyckas om resursen är i önskat tillstånd på ett minsta antal noder (anges av NodeCount) som definieras av egenskapen NodeName .
Syntax
Resurserna WaitForAll och WaitForAny delar samma syntax. Ersätt <ResourceType>
i exemplet nedan med antingen WaitForAny eller WaitForAll. Precis som nyckelordet DependsOn måste du formatera namnet som [ResourceType]ResourceName
. Om resursen tillhör en separat konfiguration inkluderar du ConfigurationName i den formaterade strängen [ResourceType]ResourceName::[ConfigurationName]::[ConfigurationName]
. NodeName är den dator, eller Node, där den aktuella resursen ska vänta.
<ResourceType> [string] #ResourceName
{
ResourceName = [string]
NodeName = [string]
[ DependsOn = [string[]] ]
[ PsDscRunAsCredential = [PSCredential]]
[ RetryCount = [Uint32] ]
[ RetryIntervalSec = [Uint64] ]
[ ThrottleLimit = [Uint32]]
}
WaitForSome-resursen har en liknande syntax som exemplet ovan, men lägger till NodeCount-nyckeln. NodeCount anger hur många noder som den aktuella resursen ska vänta på.
WaitForSome [String] #ResourceName
{
NodeCount = [UInt32]
NodeName = [string[]]
ResourceName = [string]
[DependsOn = [string[]]]
[PsDscRunAsCredential = [PSCredential]]
[RetryCount = [UInt32]]
[RetryIntervalSec = [UInt64]]
[ThrottleLimit = [UInt32]]
}
Alla WaitForXXXX delar följande syntaxnycklar.
Egenskap | Beskrivning |
---|---|
RetryIntervalSec | Antal sekunder innan du försöker igen. Minimum är 1. |
RetryCount | Det maximala antalet gånger som återförsök ska utföras. |
ThrottleLimit | Antal datorer som ska anslutas samtidigt. Standardvärdet är New-CimSession standard. |
DependsOn | Anger att konfigurationen av en annan resurs måste köras innan den här resursen har konfigurerats. Mer information finns i DependsOn |
PsDscRunAsCredential | Se Använda DSC med användarautentiseringsuppgifter |
Använda WaitForXXXX-resurser
Varje WaitForXXXX-resurs väntar på att de angivna resurserna ska slutföras på den angivna noden. Andra resurser i samma konfiguration kan sedan vara beroende avWaitForXXXX-resursen med hjälp av DependsOn-nyckeln .
I följande konfiguration väntar till exempel målnoden på att xADDomain-resursen ska slutföras på MyDC-noden med maximalt 30 återförsök, med 15 sekunders intervall, innan målnoden kan ansluta till domänen.
Som standard provar WaitForXXX-resurserna en gång och misslyckas sedan. Även om det inte krävs vill du vanligtvis ange RetryCount och 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'
}
}
}
När du kompilerar konfigurationen genereras två ".mof"-filer. Tillämpa båda ".mof"-filerna på målnoderna med hjälp av cmdleten Start-DSCConfiguration
Anteckning
WaitForXXX-resurser använder Windows Remote Management för att kontrollera tillståndet för andra noder. Mer information om port- och säkerhetskrav för WinRM finns i Säkerhetsöverväganden för PowerShell-fjärrkommunikation.