Public/Wait-IAMCoreSyncJob.ps1
|
function Wait-IAMCoreSyncJob { [CmdletBinding()] param ( [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)] [ValidatePattern("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$")] # Is a guid connector object id [string] $Id, [Parameter(Mandatory = $false)] [ValidateRange(1, [int]::MaxValue)] [int] $TimeoutMinutes = 30, [Parameter(Mandatory = $false)] [ValidateRange(1, [int]::MaxValue)] [int] $Sleep = 5 ) process { $Timeout = [DateTime]::UtcNow.AddMinutes($TimeoutMinutes) $_Job = Get-IAMCoreSyncJob -Id $Id while($Timeout -gt [DateTime]::UtcNow -and $_Job.state -in @("Pending", "Processing")) { Write-Verbose "Waiting for IAM Core sync job '$Id' to start. Current state: '$($_Job.state)'. Checking again in $Sleep seconds..." Start-Sleep -Seconds $Sleep $_Job = Get-IAMCoreSyncJob -Id $Id } if($Timeout -le [DateTime]::UtcNow) { throw "Timeout waiting for IAM Core sync job '$Id' to start. Last known state: '$($_Job.state)'" } return $_Job } } |