Určení závislostí mezi uzly
Platí pro: Windows PowerShell 5.0
DSC poskytuje speciální prostředky , WaitForAll, WaitForAny a WaitForSome , které lze použít v konfiguracích k určení závislostí na konfiguracích na jiných uzlech. Chování těchto prostředků je následující:
- WaitForAll: Proběhne úspěšně, pokud je zadaný prostředek v požadovaném stavu na všech cílových uzlech definovaných ve vlastnosti NodeName .
- WaitForAny: Proběhne úspěšně, pokud je zadaný prostředek v požadovaném stavu alespoň na jednom z cílových uzlů definovaných ve vlastnosti NodeName .
- WaitForSome: Určuje vlastnost NodeCount kromě vlastnosti NodeName . Prostředek bude úspěšný, pokud je v požadovaném stavu na minimálním počtu uzlů (určeném hodnotou NodeCount) definovaném vlastností NodeName .
Syntax
Prostředky WaitForAll a WaitForAny mají stejnou syntaxi. V následujícím příkladu nahraďte <ResourceType>
buď textem WaitForAny , nebo WaitForAll. Stejně jako klíčové slovo DependsOn budete muset název naformátovat jako [ResourceType]ResourceName
. Pokud prostředek patří do samostatné konfigurace, zahrňte ConfigurationName do formátovaného řetězce [ResourceType]ResourceName::[ConfigurationName]::[ConfigurationName]
. NodeName je počítač neboli Uzel, na kterém by měl aktuální prostředek čekat.
<ResourceType> [string] #ResourceName
{
ResourceName = [string]
NodeName = [string]
[ DependsOn = [string[]] ]
[ PsDscRunAsCredential = [PSCredential]]
[ RetryCount = [Uint32] ]
[ RetryIntervalSec = [Uint64] ]
[ ThrottleLimit = [Uint32]]
}
Prostředek WaitForSome má podobnou syntaxi jako výše uvedený příklad, ale přidává klíč NodeCount . Počet uzlů určuje, na kolik uzlů by měl aktuální prostředek čekat.
WaitForSome [String] #ResourceName
{
NodeCount = [UInt32]
NodeName = [string[]]
ResourceName = [string]
[DependsOn = [string[]]]
[PsDscRunAsCredential = [PSCredential]]
[RetryCount = [UInt32]]
[RetryIntervalSec = [UInt64]]
[ThrottleLimit = [UInt32]]
}
Všechny položky WaitForXXXX sdílejí následující klíče syntaxe.
Vlastnost | Popis |
---|---|
RetryIntervalSec | Počet sekund před opakováním. Minimum je 1. |
Počet opakování | Maximální počet opakování. |
ThrottleLimit | Počet počítačů, které se mají připojit současně Výchozí hodnota je New-CimSession výchozí. |
DependsOn | Označuje, že konfigurace jiného prostředku musí běžet před konfigurací tohoto prostředku. Další informace najdete v tématu DependsOn. |
PsDscRunAsCredential | Viz Použití DSC s přihlašovacími údaji uživatele. |
Použití prostředků WaitForXXXX
Každý prostředek WaitForXXXX čeká na dokončení zadaných prostředků na zadaném uzlu. Další prostředky ve stejné konfiguraci pak můžou záviset na prostředku WaitForXXXX pomocí klíče DependsOn .
Například v následující konfiguraci cílový uzel čeká na dokončení prostředku xADDomain na uzlu MyDC s maximálním počtem 30 opakování v 15sekundových intervalech, než se cílový uzel může připojit k doméně.
Ve výchozím nastavení se prostředky WaitForXXX jednou pokusí a pak selžou. I když to není povinné, obvykle budete chtít zadat RetryCount a 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'
}
}
}
Při kompilaci konfigurace se vygenerují dva soubory ".mof". Použití obou souborů ".mof" na cílové uzly pomocí rutiny Start-DSCConfiguration
Poznámka
Prostředky WaitForXXX používají vzdálenou správu systému Windows ke kontrole stavu jiných uzlů. Další informace o požadavcích na porty a zabezpečení pro WinRM najdete v tématu Aspekty zabezpečení vzdálené komunikace PowerShellu.