Src/Private/Get-AbrADExchange.ps1

function Get-AbrADExchange {
    <#
    .SYNOPSIS
    Used by As Built Report to retrieve Microsoft AD Exchange information
    .DESCRIPTION
 
    .NOTES
        Version: 0.8.0
        Author: Jonathan Colon
        Twitter: @jcolonfzenpr
        Github: rebelinux
    .EXAMPLE
 
    .LINK
 
    #>

    [CmdletBinding()]
    param (
    )

    begin {
        Write-PscriboMessage "Collecting AD Exchange information of $($ForestInfo.toUpper())."
    }

    process {
        $EXServers = Get-ADExchangeServer
        try {
            if ($EXServers ) {
                Section -Style Heading3 'Exchange Infrastructure' {
                    Paragraph "The following section provides a summary of the Exchange Infrastructure configured on Active Directory."
                    BlankLine
                    $EXInfo = @()
                    foreach ($EXServer in $EXServers) {
                        try {
                            Write-PscriboMessage "Collecting Active Directory Exchange information from $($ForestInfo.toUpper())"
                            $inObj = [ordered] @{
                                'Name' = $EXServer.Name
                                'Dns Name' = $EXServer.DnsHostName
                                'Server Roles' = $EXServer.ServerRoles -join ", "
                                'Version' = $EXServer.Version
                            }
                            $EXInfo += [pscustomobject]$inobj
                        }
                        catch {
                            Write-PscriboMessage -IsWarning "$($_.Exception.Message) (Exchange Item)"
                        }
                    }

                    if ($InfoLevel.Forest -ge 2) {
                        foreach ($EXServer in $EXInfo) {
                            Section -Style NOTOCHeading4 -ExcludeFromTOC "$($EXServer.Name)" {
                                $TableParams = @{
                                    Name = "Exchange Infrastructure - $($EXServer.Name)"
                                    List = $true
                                    ColumnWidths = 40, 60
                                }
                                if ($Report.ShowTableCaptions) {
                                    $TableParams['Caption'] = "- $($TableParams.Name)"
                                }
                                $EXServer | Table @TableParams
                            }
                        }
                    } else {
                        $TableParams = @{
                            Name = "Exchange Infrastructure - $($ForestInfo.toUpper())"
                            List = $false
                            Columns = 'Name', 'DNS Name', 'Server Roles', 'Version'
                            ColumnWidths = 25, 25, 25, 25
                        }
                        if ($Report.ShowTableCaptions) {
                            $TableParams['Caption'] = "- $($TableParams.Name)"
                        }
                        $EXInfo | Table @TableParams
                    }
                }
            } else {
                Write-PscriboMessage -IsWarning "No Exchange Infrastructure information found in $($ForestInfo.toUpper()), disabling the section."
            }
        }
        catch {
            Write-PscriboMessage -IsWarning "$($_.Exception.Message) (Exchabge Table)"
        }
    }

    end {}

}