functions/Export-D365LBDConfigReport.ps1

function Export-D365LBDConfigReport {
    <#
    .SYNOPSIS
    
   .DESCRIPTION
 
   .EXAMPLE
    Export-D365LBDConfigReport
 
   .EXAMPLE
   Export-D365LBDConfigReport -computername 'AXSFServer01'
   
   .PARAMETER ComputerName
   String
   The name of the D365 LBD Server to grab the environment details; needed if a config is not specified and will default to local machine.
   .PARAMETER Config
    Custom PSObject
    Config Object created by either the Get-D365LBDConfig or Get-D365TestConfigData function inside this module
 
 
   #>

    [alias("Export-D365ConfigReport")]
    [CmdletBinding()]
    param([Parameter(ValueFromPipeline = $True,
            ValueFromPipelineByPropertyName = $True,
            Mandatory = $false,
            HelpMessage = 'D365FO Local Business Data Server Name')]
        [PSFComputer]$ComputerName = "$env:COMPUTERNAME",
        [Parameter(ValueFromPipeline = $True)]
        [psobject]$Config,
        [switch]$Detailed,
        [string]$ExportLocation, ##mandatory should end in html
        [string]$CustomModuleName
    )
    ##Gather Information from the Dynamics 365 Orchestrator Server Config
    BEGIN {
    } 
    PROCESS {
        if (!$Config) {
            if ($CustomModuleName) {
                $Config = Get-D365LBDConfig -ComputerName $ComputerName -CustomModuleName $CustomModuleName
            }
            else {
                $Config = Get-D365LBDConfig -ComputerName $ComputerName
            }
        }


        $html = "<html> <body>"
        $html += "<h1>$($Config.LCSEnvironmentName) </h1>"
        if ($CustomModuleName) {
            $html += "<p><b>Custom Code $CustomModuleName Version:</b></p> $($Config.CustomModuleVersion)"
        }
        $html += "<p><b>AX Kernel Version:</b></p> $($Config.AOSKernelVersion)"
        $html += "<p><b>Environment ID:</b></p> <a href=""$($config.LCSEnvironmentURL)""> $($config.LCSEnvironmentID)</a> "
        if ($Config.AXDatabaseRestoreDate) {
            $html += "<p><b>Database Refresh/Restore Date:</b></p> $($Config.AXDatabaseRestoreDate) "
            $html += "<p><b>Database Refresh/Restore file:</b></p> $($Config.AXDatabaseBackupFileUsedForRestore) "
        }
        
        $html += "<p><b>Total Apps in Healthy State:</b></p> <a href=""$($config.SFExplorerURL)""> $($Config.NumberOfAppsinServiceFabric) </a> "

        $CountofAXServerNames = $Config.AXSFServerNames.Count
        $html += "<p><b>Amount of AX SF Servers:</b></p> $($CountofAXServerNames) </p>"
        if ($Detailed) {
            $html += "<b><p>AX SF Servers: </b></p> <ul>"
            foreach ($axsfserver in $Config.AXSFServerNames) {
                $html += "<li>$axsfserver</li>"
            }
            $html += "</ul>"
        }
        $html += "<p><b>Number of Orchestrator Servers: </b> $($Config.OrchestratorServerNames.Count)</p>"
        if ($Detailed) {
            $html += "<p><b>Orchestrator Servers:</b></p> <ul>"
            foreach ($AXOrchServerName in $Config.OrchestratorServerNames) {
                $html += "<li>$AXOrchServerName</li>"
            }
            $html += "</ul>"
        }
        $html += "<p><b>AX Database Connection Endpoint:</b></p> $($Config.AXDatabaseServer)"
        $html += "<p><b>AX database is $($Config.DatabaseClusteredStatus)</p>"
        $DBCount = $Config.DatabaseClusterServerNames.Count

        if ($DBCount -gt 1) {
            $html += "<p><b>Number of Database servers:</b> $($Config.DatabaseClusterServerNames.Count)</p>"
            if ($Detailed) {
                $html += "<p><b>Database server(s):</b></p> <ul>"
                foreach ($AXDBServerName in $($Config.DatabaseClusterServerNames)) {
                    $html += "<li>$AXDBServerName</li>"
                }
                $html += "</ul>"
            }
        }
           
        $html += "<p><b>Local Agent Version: $($Config.OrchServiceLocalAgentVersionNumber)</p>"

        if ($Detailed) {
            $html += "<p><b>SF Client Thumbprint:</b></p><p> $($Config.SFClientCertificate)</p>"
        }
        $html += "<p><b>SF Client Cert Expires After:</b></p><p> $($Config.SFClientCertificateExpiresAfter)</p>"

        if ($Detailed) {
            $html += "<p><b>SF Server Thumbprint:</b></p><p> $($Config.SFServerCertificate)</p>"
        }
        $html += "<p><b>SF Server Cert Expires After:</b></p><p> $($Config.SFServerCertificateExpiresAfter)</p>"

        if ($Detailed) {
            $html += "<p><b>Data Encryption Thumbprint:</b></p><p> $($Config.DataEncryptionCertificate)</p>"
        }
        $html += "<p><b>Data Encryption Cert Expires After:</b></p><p> $($Config.DataEncryptionCertificateExpiresAfter)</p>"

        if ($Detailed) {
            $html += "<p><b>Data Signing Thumbprint:</b></p><p> $($Config.DataSigningCertificate)</p>"
        }
        $html += "<p><b>Data Signing Cert Expires After:</b></p><p> $($Config.DataSigningCertificateExpiresAfter)</p>"

        if ($Detailed) {
            $html += "<p><b>Session Authentication Thumbprint:</b></p><p> $($Config.SessionAuthenticationCertificate)</p>"
        }
        $html += "<p><b>Session Authentication Cert Expires After:</b></p><p> $($Config.SessionAuthenticationCertificateExpiresAfter)</p>"

        if ($Detailed) {
            $html += "<p><b>Shared Access SMB Thumbprint:</b></p><p> $($Config.SharedAccessSMBCertificate)</p>"
        }
        $html += "<p><b>Shared Access SMB Cert Expires After:</b></p><p> $($Config.SharedAccessSMBCertificateExpiresAfter)</p>"

        if ($Config.DataEnciphermentCertificateExpiresAfter) {
            if ($Detailed) {
                $html += "<p><b>Data Encipherment Thumbprint:</b></p><p> $($Config.DataEnciphermentCertificate)</p>"
            }
            $html += "<p><b>Data Encipherment Cert Expires After:</b></p><p> $($Config.DataEnciphermentCertificateExpiresAfter)</p>"
        }
        else {
            Write-PSFMessage -Level Warning -Message "DataEncipherment likely not configured in xml"
        }

        if ($Detailed) {
            $html += "<p><b>Financial Reporting (MR) Thumbprint:</b></p><p> $($Config.FinancialReportingCertificate)</p>"
        }
        $html += "<p><b>Financial Reporting (MR) Cert Expires After:</b></p><p> $($Config.FinancialReportingCertificateExpiresAfter)</p>"

        if ($Detailed) {
            $html += "<p><b>Reporting SSRS Thumbprint:</b></p><p> $($Config.ReportingSSRSCertificate)</p>"
        }
        $html += "<p><b>Reporting SSRS Cert Expires After:</b></p><p> $($Config.ReportingSSRSCertificateExpiresAfter)</p>"
       

        if ($Config.DatabaseEncryptionCertificateExpiresAfter) {
            if ($Detailed) {
                $html += "<p><b>Database Encryption Thumbprint:</b></p><p> $($Config.DatabaseEncryptionCertificate)</p>"
            }
            $html += "<p><b>Database Encryption Cert Expires After:</b></p><p> $($Config.DatabaseEncryptionCertificateExpiresAfter)</p>"
        }
        else {
            Write-PSFMessage -Level Warning -Message "DataEncipherment likely not configured in xml"
        }
        if ($Detailed) {
            $html += "<p><b>Local Agent Thumbprint:</b></p><p> $($Config.LocalAgentCertificate)</p>"
        }
        $html += "<p><b>Local Agent Cert Expires After:</b></p><p> $($Config.LocalAgentCertificateExpiresAfter)</p>"
        $html += "</body></html>"
        $html |  Out-File "$ExportLocation"  -Verbose
  
    }
    END {}
}