tak.Get-SPFRecord.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
function Get-SPFRecord {
    <#
    .Synopsis
    Get SPF Record for a domain.
    .DESCRIPTION
    This function uses Resolve-DNSName to get the SPF Record for a given domain. Objects with a DomainName property,
    such as returned by Get-AcceptedDomain, can be piped to this function.
    .EXAMPLE
    Get-AcceptedDomain | Get-SPFRecord
 
    This example gets SPF records for all domains returned by Get-AcceptedDomain.
    #>

    [CmdletBinding(HelpUri = 'https://ntsystems.it/PowerShell/TAK/Get-SPFRecord/')]
    param (
        # Specify the Domain name for the query.
        [Parameter(Mandatory=$true,
            ValueFromPipelineByPropertyName=$true,
            ValueFromPipeline=$true)]
        [string]
        $DomainName,
        
        # Specify the Domain name for the query.
        [string]
        $Server
    )
    process {
        $params = @{
            Type = "txt"
            Name = $DomainName
            ErrorAction = "Stop"
        }
        if($Server) { $params.Add("Server",$Server) }
        try {
            $dns = Resolve-DnsName @params | Where-Object Strings -Match "spf1"
            $dns | Select-Object @{Name="DomainName";Expression={$_.Name}},@{Name="Record";Expression={$_.Strings}}
        } catch {
            Write-Warning $_
        }
    }
}