適用於:Windows PowerShell 5.0
DSC 提供特殊資源 WaitForAll、 WaitForAny 和 WaitForSome ,這些資源可用於組態,以指定其他節點上組態的相依性。 這些資源的行為如下:
- WaitForAll:如果指定的資源在 NodeName 屬性中定義的所有目標節點上處於所需狀態,則會成功。
- WaitForAny:如果指定的資源在 NodeName 屬性中定義的至少一個目標節點上處於所需狀態,則會成功。
- WaitForSome:除了 NodeName 屬性之外,還指定 NodeCount 屬性。 如果資源在 NodeName 屬性所定義的節點數目下限 (由 NodeCount 指定) 上處於所需狀態,則資源會成功。
語法
WaitForAll 和 WaitForAny 資源會共用相同的語法。 在下列範例中,請取代 <ResourceType> 為 WaitForAny 或 WaitForAll。 與 DependsOn 關鍵字一樣,您需要將名稱格式化為 [ResourceType]ResourceName。 如果資源屬於個別的組態,請在格式化字串[ResourceType]ResourceName::[ConfigurationName]::[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 都會共用下列語法索引鍵。
| 房產 | Description |
|---|---|
| 重試間隔秒 | 重試之前的秒數。 最小值為 1。 |
| 重試計數 | 重試次數上限。 |
| 節流限制 | 要同時連接的機器數量。 預設值為 New-CimSession 預設值。 |
| 相依 | 指出在配置此資源之前,必須先執行另一個資源的組態。 如需詳細資訊,請參閱 DependsOn |
| PsDscRunAs認證 | 請參閱 將DSC與使用者認證搭配使用 |
使用 WaitForXXXX 資源
每個 WaitForXXXX 資源都會等待指定的資源在指定的節點上完成。 然後,相同組態中的其他資源可以使用 DependsOn 索引鍵相依於WaitForXXXX 資源。
例如,在下列組態中,目標節點正在等待 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 Cmdlet 將這兩個 “.mof” 檔案套用至目標節點
備註
WaitForXXX 資源會使用 Windows 遠端管理來檢查其他節點的狀態。 如需 WinRM 埠和安全性需求的詳細資訊,請參閱 PowerShell 遠端安全性考慮。