Public/Export-CMHealthReport.ps1

function Export-CMHealthReport {
    <#
    .SYNOPSIS
        Convert extracted ConfigMgr site information to Word Document
    .DESCRIPTION
        Converts the data output from Get-CMHealthCheck to generate a
        report document using Microsoft Word (2010, 2013, 2016). Intended
        to be invoked on a desktop computer which has Office installed.
    .PARAMETER ReportFolder
        Path to output data folder (e.g. "My Documents\2019-03-06\cm01.contoso.local")
    .PARAMETER AutoConfig
        Use an auto configuration file, cmhealthconfig.txt in "My Documents" folder
        to fill-in AuthorName, CopyrightName, Theme, CssFilename, TableRowStyle
    .PARAMETER Detailed
        Collect more granular data for final reporting, or use AutoConfig file
    .PARAMETER CoverPage
        Word theme cover page (default = "Slice (Light)"), or use AutoConfig file
    .PARAMETER Template
        Word document file to use as a template. Should have a cover page already in place.
        If Template is specified, CoverPage and Copyright are ignored.
    .PARAMETER CustomerName
        Name of customer (default = "Customer Name"), or use AutoConfig file
    .PARAMETER AuthorName
        Report Author name (default = "Your Name"), or use AutoConfig file
    .PARAMETER CopyrightName
        Text to use for copyright footer string (default = "Your Company Name")
    .PARAMETER ImageFile
        Path to jpg or png file for custom logo on report. Default is using PS gallery icon
    .PARAMETER Overwrite
        Overwrite existing report file if found, or use AutoConfig file
    .PARAMETER Healthcheckfilename
        Healthcheck configuration XML file name (default = ".\assets\cmhealthcheck.xml")
        The file can be local, UNC or URI sourced as well
    .PARAMETER MessagesFilename
        Status and error message lookup table (default = ".\assets\messages.xml")
        The file can be local, UNC or URI sourced as well
    .PARAMETER Healthcheckdebug
        Enable verbose output (or use -Verbose)
    .PARAMETER Show
        Display report in default web browser when completed
    .EXAMPLE
        Export-CMHealthCheck -Detailed -CustomerName "Contoso" -AuthorName "David Stein" -CopyrightName "ACME Consulting" -Overwrite -Verbose
    .EXAMPLE
        Export-CMHealthCheck -ReportFolder "2019-03-06\cm01.contoso.local" -Detailed -Template ".\contoso.docx" -CustomerName "Contoso" -AuthorName "David Stein" -CopyrightName "ACME Consulting" -Overwrite -Verbose
    .EXAMPLE
        Export-CMHealthCheck -ReportFolder "2019-03-06\cm01.contoso.local" -AutoConfig -CustomerName "Contoso"
    .NOTES
        Sample AutoConfig file cmhealthconfig.txt...
        AuthorName=John Wick
        CopyrightName=Retirement Specialists
        Theme=Ocean
        Detailed=True
        TableRowStyle=Solid
        CssFilename=c:\docs\wickrocks.css
        ImageFile=c:\docs\bodybags.png
        CoverPage=
        Template=
        HealthcheckFilename=
        MessagesFilename=
        HealthcheckDebug=False
        Overwrite=True
    #>

    [CmdletBinding()]
    param (
        [parameter()][ValidateNotNullOrEmpty()][string] $ReportFolder = "$([System.Environment]::GetFolderPath('Personal'))",
        [parameter()][ValidateSet('HTML','Word')][string] $ReportType = 'HTML',
        [parameter()][ValidateNotNullOrEmpty()][string] $OutputFolder = "$([System.Environment]::GetFolderPath('Personal'))",
        [parameter()][string] $CustomerName = "Customer Name",
        [parameter()][switch] $AutoConfig,
        [parameter()][string] $SmsProvider = "",
        [parameter()][switch] $Detailed,
        [parameter()][string] $CoverPage = "Slice (Light)",
        [parameter()][string] $Template = "",
        [parameter()][string] $AuthorName = "",
        [parameter()][string] $CopyrightName  = "Your Company Name",
        [parameter()][string] $ImageFile = "",
        [parameter()][string] $Healthcheckfilename = "",
        [parameter()][string] $MessagesFilename = "",
        [parameter()][bool] $Healthcheckdebug = $False,
        [parameter()][switch] $Show
    )
    if ($env:USERPROFILE -eq 'c:\windows\system32\config\systemprofile') {
        $OutputFolder = $env:TEMP
    }
    Write-Host "Analyzing collected data, publishing report"
    $StartTime = Get-Date
    switch ($ReportType) {
        'HTML' {
            $expParams = @{
                ReportFolder  = $ReportFolder 
                AutoConfig    = $AutoConfig
                CustomerName  = $CustomerName 
                CopyrightName = $CopyrightName 
                AuthorName    = $AuthorName
                ImageFile     = $ImageFile
                SmsProvider   = $SmsProvider
                OutputFolder  = $OutputFolder
                Detailed      = (!(!$Detailed))
                Overwrite     = $True
                Theme         = "Ocean"
                TableRowStyle = "Solid"
                Show          = $Show
            }
            Export-CMHealthCheckHTML @expParams
        }
        'Word' {
            $expParams = @{
                ReportFolder  = $ReportFolder 
                CustomerName  = $CustomerName 
                CopyrightName = $CopyrightName 
                AuthorName    = $AuthorName 
                Detailed      = $Detailed
                Overwrite     = $Overwrite
                AutoConfig    = $AutoConfig
                OutputFolder  = $OutputFolder
                CoverPage     = "Slice (Light)"
            }
            Export-CMHealthCheck @expParams
        }
    }
    $RunTime  = Get-TimeOffset -StartTime $StartTime
    Write-Output "Report publishing process completed. Total runtime: $RunTime (hh`:mm`:ss)"
}