public/Out-HealthReport.ps1
<#
.SYNOPSIS Export HTML report .DESCRIPTION Export HTML health test report .PARAMETER TestData Health test data, returned from Test-CmHealth .PARAMETER Path HTML file path .PARAMETER Show Open HTML report when complete #> function Out-HealthReport { [CmdletBinding()] param ( [parameter(Mandatory=$True, ValueFromPipeline=$True, ValueFromPipelineByPropertyName=$True)]$TestData, [parameter(Mandatory=$False)][string]$Path = "$($env:USERPROFILE)\Desktop\healthreport.htm", [parameter(Mandatory=$False)][switch]$Show ) BEGIN { $tablewidth = "800px" $leftpanel = "150px" $heading = "<h1>Health Report</h1>" } PROCESS { $summary = $TestData | Group-Object Status foreach ($item in $TestData) { $chunk = $item | foreach-object { @" <h2>$($_.TestName)</h2> <table width=$tablewidth> <tr><td width=$leftpanel>Description</td><td>$($_.Description)</td></tr> <tr><td>Group</td><td>$($_.TestGroup)</td></tr> <tr><td>Test Result</td><td>$($_.Status)</td></tr> <tr><td>Message</td><td>$($_.Message)</td></tr> <tr><td>Runtime</td><td>$($_.Runtime)</td></tr> "@ if ($item.TestData.Count -gt 0) { $tdata = $item.TestData -join ';' $chunk += "<tr><td>Data</td><td>$($tdata.ToString())</td></tr>" } } $chunk += "</table>" $body += $chunk } } END { $body += "<p>Copyright ©$(Get-Date -f 'yyyy') Skatterbrainz, All rights reserved. No tables reserved.</p>" $summary = "<table width=$tablewidth><tr><th>Count</th><th>Result</th><th>Tests</th></tr>" $TestData | Group-Object Status | Foreach-Object { $summary += "<tr><td>$($_.Count)</td><td>$($_.Name)</td><td>$("<ul><li>$($_.Group.TestName -join '</li><li>')</li></ul>")</td></tr>" } $summary += "</table>" $heading += $summary $body = $heading + $body $head = @" <style><!-- td,th {font-family:verdana;font-size:10pt;} body {font-family:calibri,helvetica,sans;} --></style> "@ $report = "Health Report" | ConvertTo-Html -Title "Health Report" -Body $body -Head $head $report | Out-File $Path -Force if ($Show) { Start-Process $Path } } } |