Functions/Public/Export-AMHealthCheck.ps1
function Export-AMHealthCheck { <# .SYNOPSIS Exports a health check against Automate Enterprise to a file. .DESCRIPTION Export-AMHealthCheck exports Automate Enterprise health check results to a file. .PARAMETER HealthCheckResult The health check results to export .PARAMETER OutputPath The location to save the health check results .PARAMETER OutputFormat The format to save the health check results in: HTML, Word, Text, XML #> [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [ValidateNotNullOrEmpty()] $HealthCheckResult, [Parameter(Mandatory = $true)] [ValidateScript({Test-Path -Path $_})] $OutputPath, [ValidateSet("HTML","Word","Text","XML")] $OutputFormat = "HTML" ) foreach ($connection in ($HealthCheckResult | Group-Object -Property ConnectionAlias).Name) { Document "Automate_Health_Check_$($connection.Replace(":","_"))_$(Get-Date -Format "yyyyMMddhhmmss")" { Style -Name "InformationHealthCheckHeader" -Size 12 -Color Gray Style -Name "WarningHealthCheckHeader" -Size 12 -Color Orange Style -Name "ErrorHealthCheckHeader" -Size 12 -Color Red DocumentOption -Margin 24 Paragraph "Automate Health Check" -Style Heading1 Paragraph "Generated on $(Get-Date -Format G)" -Style Heading2 PageBreak TOC -Name "Overview" foreach ($category in ($HealthCheckResult | Where-Object {$_.ConnectionAlias -eq $connection} | Group-Object Category).Name) { $thisCategoryResults = $HealthCheckResult | Where-Object {$_.Category -eq $category -and $_.ConnectionAlias -eq $connection} if (($thisCategoryResults | Measure-Object).Count -gt 0) { PageBreak Section $category { foreach ($healthCheck in ($HealthCheckResult | Where-Object {$_.Category -eq $category -and $_.ConnectionAlias -eq $connection})) { $thisHealthCheckResult = $thisCategoryResults | Where-Object {$_.Function -eq $healthCheck.Function -and $_.ConnectionAlias -eq $connection} if (($thisHealthCheckResult | Measure-Object).Count -gt 0) { LineBreak $healthCheckResultCount = ($thisHealthCheckResult.Results | Measure-Object).Count if ($healthCheck.ShowCount) { $healthCheckHeader = "$($healthCheck.Name) : $healthCheckResultCount" } else { $healthCheckHeader = $healthCheck.Name } Section $healthCheckHeader { Paragraph $healthCheck.Description if ($healthCheckResultCount -gt 0) { switch ($thisHealthCheckResult.Results[0].GetType().FullName) { "AMHealthCheckItem" { $thisHealthCheckResult.Results | Table -Columns "Name","Value" } "AMConstructHealthCheckItem" { $thisHealthCheckResult.Results | Table -Columns "Name","Path","ID","Hint" } } } } -Style "$($healthCheck.Importance)HealthCheckHeader" } else { Write-Warning "Could not find health check $($healthCheck.Function) in category $($category.Name) when formatting document!" } } } -Style "Heading2" } else { Write-Warning "Could not find category $($category.Name) when formatting document!" } } } | Export-Document -Format $OutputFormat -Path $OutputPath } } |