Public/Email/Get-EmailRecord.ps1

<#
Copyright © 2024 Integris. For internal company use only. All rights reserved.
#>


FUNCTION Get-EMailRecord {

    <#
    .SYNOPSIS
    Gets MX, SPF, DMARC, and DKIM records for the requested domain(s).
 
    .DESCRIPTION
    Gets MX, SPF, DMARC, and DKIM records for the requested domain(s).
     
    .PARAMETER Domain
     The domain(s) to get the MX, SPF, DMARC, and DKIM records of.
     
    .EXAMPLE
    Get-EMailRecords IntegrisIt.com,Microsoft.com
    #>


    param (
        [Parameter(Mandatory)]
        [STRING[]]$Domain
    )

    $Results = @()

    Write-IntegrisProgressBar -TotalCount 4 -CurrentCount 0 -Activity "Getting E-Mail Records" -Status "Getting MX Records" -ID 316172442
    $Results += Get-MXRecord $Domain 

    Write-IntegrisProgressBar -TotalCount 4 -CurrentCount 1 -Activity "Getting E-Mail Records" -Status "Getting SPF Records" -ID 316172442
    $Results += Get-SPFRecord $Domain

    Write-IntegrisProgressBar -TotalCount 4 -CurrentCount 2 -Activity "Getting E-Mail Records" -Status "Getting DMARC Records" -ID 316172442
    $Results += Get-DMARCRecord $Domain

    Write-IntegrisProgressBar -TotalCount 4 -CurrentCount 3 -Activity "Getting E-Mail Records" -Status "Getting DKIM Records" -ID 316172442
    $Results += Get-DKIMRecord $Domain

    $Results2 = @()
    FOREACH ($Item in $Domain) {
        $Results2 += $Results | Where-Object { $_.Domain -eq $Item -and $_.Purpose -eq "MX" }
        $Results2 += $Results | Where-Object { $_.Domain -eq $Item -and $_.Purpose -eq "SPF" }
        $Results2 += $Results | Where-Object { $_.Domain -eq $Item -and $_.Purpose -eq "DMARC" }
        $Results2 += $Results | Where-Object { $_.Domain -eq $Item -and $_.Purpose -eq "DKIM" }
    }

    Write-IntegrisLogFile $Results | Select Domain, Name, Type, Purpose, Value, Preference

    Write-Progress -ID 316172442 -Completed -Activity "Getting E-Mail Records"

    RETURN $Results2
}