Public/Email/Get-SPFRecord.ps1

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


FUNCTION Get-SPFRecord {

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


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

    $Results = @()

    $TotalCount = $Domain.Count
    $CurrentCount = 0

    FOREACH ($Entry in $Domain) { 
           
        Write-IntegrisProgressBar -TotalCount $TotalCount -CurrentCount $CurrentCount -Activity "Getting SPF Records" -Status "Getting SPF Record for [$Entry]" -ID 20918232 
        $CurrentCount++ 

        $SPFRecord = (Resolve-DNSName -Type TXT -Name $Entry | Where-Object { $_.Strings -like "*v=spf1*" } )

        FOREACH ($Item in $SPFRecord) {
            $Results += [PSCustomObject]@{
                PSTypeName = 'IntegrisPowerShell.DNSRecord'
                Domain = $Entry
                Name = $Item.Name
                Type = $Item.Type
                Purpose = "SPF"          
                Value = $Item.Strings -Join ""
                Preference = ""
            }
        }
    }

    Write-IntegrisLogFile $Results
    
    Write-Progress -ID 20918232 -Completed -Activity "Getting SPF Records"
    RETURN $Results
}