DSCResources/myAdWaitForObject/myAdWaitForObject.psm1
Import-Module $PSScriptRoot\..\myAdHelper.psm1 -Verbose:$false function Get-TargetResource { param ( [Parameter(Mandatory)] [String]$Identity, [String]$Server, [System.Management.Automation.PSCredential]$Credential, [UInt64]$RetryIntervalSec = 60, [UInt32]$RetryCount = 10 ) $myParams = @{ } + $PSBoundParameters $myParams.Remove('Ensure') | out-null $myParams.Remove('RetryIntervalSec') | out-null $myParams.Remove('RetryCount') | out-null ReplacePartitionTokens @myParams } function Set-TargetResource { param ( [Parameter(Mandatory)] [String]$Identity, [String]$Server, [System.Management.Automation.PSCredential]$Credential, [UInt64]$RetryIntervalSec = 60, [UInt32]$RetryCount = 120 ) $NewIdentity = Get-TargetResource @PSBoundParameters Write-Verbose "NewIdentity:$NewIdentity" $myParams = @{ } + $PSBoundParameters $myParams.Remove('Ensure') | out-null $myParams.Remove('Identity') | out-null $myParams.Add("Identity", $NewIdentity) $myParams.Remove('RetryIntervalSec') | out-null $myParams.Remove('RetryCount') | out-null for($count = 0; $count -lt $RetryCount; $count++) { if (myGetAdObject @myParams) { break } else { Write-Verbose -Message "Object '$($NewIdentity)' not found. Try $($count)/$($RetryCount). Will retry again after $RetryIntervalSec sec" Start-Sleep -Seconds $RetryIntervalSec Clear-DnsClientCache } } if ($(myGetAdObject @myParams) -eq $null) { throw "Object '$($NewIdentity)' NOT found after $RetryCount attempts." } } function Test-TargetResource { [OutputType([System.Boolean])] param ( [Parameter(Mandatory)] [String]$Identity, [String]$Server, [System.Management.Automation.PSCredential]$Credential, [UInt64]$RetryIntervalSec = 60, [UInt32]$RetryCount = 10 ) $NewIdentity = Get-TargetResource @PSBoundParameters Write-Verbose "NewIdentity:$NewIdentity" $myParams = @{ } + $PSBoundParameters $myParams.Remove('Ensure') | out-null $myParams.Remove('Identity') | out-null $myParams.Add("Identity", $NewIdentity) $myParams.Remove('RetryIntervalSec') | out-null $myParams.Remove('RetryCount') | out-null if(myGetAdObject @myParams) { $true } else { $false } } |