public/Invoke-CmHealthTests.ps1
function Invoke-CmHealthTests { <# .SYNOPSIS Auto-generate HTML reports for Test-CmHealth .DESCRIPTION Generate an HTML report for both "summary" and "detailed" results by invoking Test-CmHealth and sending the output to two report files .PARAMETER SiteCode ConfigMgr site code .PARAMETER SiteServer Name or FQDN of primary site server .PARAMETER SQLInstance Name or FQDN of SQL instance/host .PARAMETER DBName Name of ConfigMgr Database .PARAMETER ClientName Name of customer or owner of the primary site .PARAMETER OutputFolder Path where output (report) files will be created .PARAMETER FilterResults Filter test results which are exported to report files: * FailuresAndWarnings = FAIL, ERROR, WARNING * FailuresOnly = FAIL, ERROR * WarningsOnly = WARNING * Passing = PASS * All = All results (default) .EXAMPLE Invoke-CmHealthTests -SiteCode P01 -SiteServer cm01.contoso.local -SQLInstance cm01.contoso.local -DBName CM_P01 -ClientName Contoso Generates "cmhealth_contoso_detailed_yyyyMMdd.htm" and "cmhealth_contoso_summary_yyyyMMdd.htm" both saved under the current user Documents folder ($($env:USERPROFILE)\Documents) .EXAMPLE Invoke-CmHealthTests -SiteCode P01 -SiteServer cm01.contoso.local -SQLInstance cm01.contoso.local -DBName CM_P01 -ClientName Contoso -OutputFolder c:\windows\temp Generates "cmhealth_contoso_detailed_yyyyMMdd.htm" and "cmhealth_contoso_summary_yyyyMMdd.htm", both files saved under C:\Windows\Temp .EXAMPLE Invoke-CmHealthTests -SiteCode P01 -SiteServer cm01.contoso.local -SQLInstance cm01.contoso.local -DBName CM_P01 -ClientName Contoso -FilterResults FailuresOnly Generates "cmhealth_contoso_detailed_yyyyMMdd.htm" and "cmhealth_contoso_summary_yyyyMMdd.htm", showing only FAIL results, both files saved under the current user Documents folder ($($env:USERPROFILE)\Documents) .NOTES Thank you! .LINK https://github.com/Skatterbrainz/cmhealth/blob/master/docs/Invoke-CmHealthTests.md #> [CmdletBinding()] [OutputType()] param( [parameter(Mandatory=$True)][string]$SiteCode, [parameter(Mandatory=$True)][string]$SiteServer, [parameter(Mandatory=$True)][string]$SQLInstance, [parameter(Mandatory=$True)][string]$DBName, [parameter(Mandatory=$True)][string]$ClientName, [parameter(Mandatory=$False)][string]$OutputFolder = "$($env:USERPROFILE)\documents", [parameter(Mandatory=$False)][switch]$NoVersionCheck, [parameter(Mandatory=$False)][string][ValidateSet('All','FailuresAndWarnings','FailuresOnly','WarningsOnly','Passing')]$FilterResults = 'All' ) Import-Module cmhealth $tparams = @{ SiteCode = $SiteCode Database = $DBName SiteServer = $SiteServer SqlInstance = $SQLInstance TestingScope = 'All' NoVersionCheck = $NoVersionCheck } $res = Test-CmHealth @tparams switch ($FilterResults) { 'FailuresAndWarnings' { $res = $res | Where-Object {$_.Status -in ('FAIL','ERROR','WARNING')} } 'FailuresOnly' { $res = $res | Where-Object {$_.Status -in ('FAIL','ERROR')} } 'WarningsOnly' { $res = $res | Where-Object {$_.Status -in ('WARNING')} } 'Passing' { $res = $res | Where-Object {$_.Status -in ('PASS')} } } Write-Verbose "exporting detailed and summary report files" $res | Out-CmHealthReport -Title $ClientName -Footer "" -Detailed -OutputFolder $OutputFolder $res | Out-CmHealthReport -Title $ClientName -Footer "" -OutputFolder $OutputFolder Write-Host "Report files saved to folder: $OutputFolder" } |