Functions/Base/Wait-OIMObject.ps1
|
Function Wait-OIMObject{ [CmdletBinding()] param ( [Parameter(ValueFromPipeline=$true,Mandatory=$true)] $Object, [Parameter(Mandatory=$true)] [string]$PropertyName, [Parameter(Mandatory=$true)] $Value, $timeout = 300, $sleep = 3 ) Begin{} Process{ ForEach($xObjectkey in $Object.xObjectKey){ $xmlXObjectKey = [xml] $xObjectkey $remainingtime = $timeout $current = Get-OIMObject -ObjectName $xmlXObjectKey.key.T -id $xmlXObjectKey.key.P While($current.$PropertyName -ne $Value -and $remainingtime -ge 0){ Write-Progress "Wait for $($xmlXObjectKey.key.T)/$($xmlXObjectKey.key.P) $PropertyName = '$Value' seconds remaining:$remainingtime" -PercentComplete ((($timeout-$remainingtime)/$timeout )*100) Start-Sleep -Seconds $sleep $remainingtime -= $sleep $current = Get-OIMObject -ObjectName $xmlXObjectKey.key.T -id $xmlXObjectKey.key.P } if($current.$PropertyName -ne $Value){ Write-Warning "Timeout waiting for $($xmlXObjectKey.key.T)/$($xmlXObjectKey.key.P) to reach $PropertyName = '$Value' (current value: '$($current.$PropertyName)')" } $current } } End{} } |