Private/Test-XdCatalogHealth.ps1
function Test-XdCatalogHealth { <# .SYNOPSIS Checks the Status of the Environmental Tests Passed In .DESCRIPTION Checks the Status of the Environmental Tests Passed In .PARAMETER AdminAddress Current Broker .NOTES Current Version: 1.0 Creation Date: 22/02/2018 .CHANGE CONTROL Name Version Date Change Detail Adam Yarborough 1.0 21/03/2018 Function Creation Adam Yarborough 1.1 07/06/2018 Update for object model. Adam Yarborough 1.2 20/06/2018 Begin/Process/End .EXAMPLE None Required #> [CmdletBinding()] Param( [parameter(Mandatory = $true, ValueFromPipeline = $true)]$AdminAddress ) Begin { $ctxsnap = Add-PSSnapin Citrix.EnvTest.* -ErrorAction SilentlyContinue $ctxsnap = Get-PSSnapin Citrix.EnvTest.* -ErrorAction SilentlyContinue if ($null -eq $ctxsnap) { Write-Error "XenDesktop Powershell Snapin Load Failed" Write-Error "Cannot Load Citrix.EnvTest.* Powershell SDK" Return $false } else { Write-Verbose "XenDesktop Powershell SDK Snapin Loaded" } } Process { #Create array with results $Results = @() $Errors = @() Write-Verbose "Initialize Test Variables" $Health = $true Write-Verbose "Catalog Env Check started" $XDCatalogs = Get-BrokerCatalog -AdminAddress $AdminAddress foreach ( $Catalog in $XDCatalogs ) { Write-Verbose "Initialize Test Variables" Write-Verbose "Testing $($Catalog.Name)" $TestTarget = New-EnvTestDiscoveryTargetDefinition -AdminAddress $AdminAddress -TargetIdType "Catalog" -TestSuiteId "Catalog" -TargetId $Catalog.Uuid $TestResults = Start-EnvTestTask -AdminAddress $AdminAddress -InputObject $TestTarget -RunAsynchronously foreach ( $Result in $TestResults.TestResults ) { foreach ( $Component in $Result.TestComponents ) { Write-Verbose "$Catalog.Name - $($Component.TestID) - $($Component.TestComponentStatus)" if ( ($Component.TestComponentStatus -ne "CompletePassed") -and ($Component.TestComponentStatus -ne "NotRun") ) { $Errors += "$Catalog.Name - $($Component.TestID) - $($Component.TestComponentStatus)" $Health = $false } } } } if ( $Health ) { return $true } else { $Results += [PSCustomObject]@{ 'Errors' = $Errors } return $Results } } End { } } |