Skip to content

Instantly share code, notes, and snippets.

@irwins
Last active November 5, 2015 13:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save irwins/3ea35784b361c0b1320b to your computer and use it in GitHub Desktop.
Save irwins/3ea35784b361c0b1320b to your computer and use it in GitHub Desktop.
<#
Author: I.C.A. Strachan / O. Doron
Version: 1.0
Version History:
Purpose: Create AutoDiscover Zone and add ResourceRecord
Replace your local domain name and Mailbox server(s) IP address(es) with the
ones in the example:
Example:
.\Set-EX16DNSRecords.ps1 -fqdn domain.local -ServerIPAddress 192.168.1.4, 192.168.1.5 -verbose
#>
[CmdletBinding()]
Param(
[string]$fqdn ='domain.local',
[string[]]$ServerIPAddress= @('192.168.1.4', '192.168.1.5')
)
BEGIN{
$dnsRRA = @{
Name = '.'
Zonename = "autodiscover.$($fqdn)"
AllowUpdateAny = $true
TimeToLive = '01:00:00'
}
$mailRRA = @{
Name = '.'
Zonename = "mail.$($fqdn)"
AllowUpdateAny = $true
TimeToLive = '01:00:00'
}
$webmailRRA = @{
Name = '.'
Zonename = "webmail.$($fqdn)"
AllowUpdateAny = $true
TimeToLive = '01:00:00'
}
$srvRRA = @{
Name = '.'
Zonename = "_autodiscover._tcp.$($fqdn)"
DomainName = "autodiscover.$($fqdn)"
priority = '0'
weight = '0'
port = '443'
AllowUpdateAny = $true
TimeToLive = '01:00:00'
}
$dnsPZ = @{
Name = "autodiscover.$($fqdn)"
ReplicationScope = 'Forest'
DynamicUpdate = 'Secure'
}
$mailPZ = @{
Name = "mail.$($fqdn)"
ReplicationScope = 'Forest'
DynamicUpdate = 'Secure'
}
$webmailPZ = @{
Name = "webmail.$($fqdn)"
ReplicationScope = 'Forest'
DynamicUpdate = 'Secure'
}
$srvPZ = @{
Name = "_autodiscover._tcp.$($fqdn)"
ReplicationScope = 'Forest'
DynamicUpdate = 'Secure'
}
Import-Module DNSServer -Verbose:$false
}
PROCESS{
#Only Add Zone is count is zero (doesn't exists)
If (@(Get-DnsServerZone $dnsRRA.zonename -ErrorAction SilentlyContinue ).Count -eq 0 ){
Write-Verbose "Creating DNS Zone: $($dnsPZ.name)"
Add-DnsServerPrimaryZone @dnsPZ
}
Else{
Write-Verbose "DNS Zone $($dnsPZ.name) already exists"
}
If (@(Get-DnsServerZone $mailRRA.zonename -ErrorAction SilentlyContinue ).Count -eq 0 ){
Write-Verbose "Creating DNS Zone: $($mailPZ.name)"
Add-DnsServerPrimaryZone @mailPZ
}
Else{
Write-Verbose "DNS Zone $($mailPZ.name) already exists"
}
If (@(Get-DnsServerZone $webmailRRA.zonename -ErrorAction SilentlyContinue ).Count -eq 0 ){
Write-Verbose "Creating DNS Zone: $($webmailPZ.name)"
Add-DnsServerPrimaryZone @webmailPZ
}
Else{
Write-Verbose "DNS Zone $($webmailPZ.name) already exists"
}
If (@(Get-DnsServerZone $srvRRA.zonename -ErrorAction SilentlyContinue ).Count -eq 0 ){
Write-Verbose "Creating DNS Zone: $($srvPZ.name)"
Add-DnsServerPrimaryZone @srvPZ
}
Else{
Write-Verbose "DNS Zone $($srvPZ.name) already exists"
}
#Get string equivalent of all A records
$RRA = Get-DnsServerResourceRecord -ZoneName "autodiscover.$($fqdn)" -RRType A | Out-String
$RRB = Get-DnsServerResourceRecord -ZoneName "mail.$($fqdn)" -RRType A | Out-String
$RRC = Get-DnsServerResourceRecord -ZoneName "webmail.$($fqdn)" -RRType A | Out-String
$RRD = Get-DnsServerResourceRecord -ZoneName "_autodiscover._tcp.$($fqdn)" -RRType Srv | Out-String
$ServerIPAddress | ForEach-Object {
If (!$RRA.Contains($_)){
Write-Verbose "Adding resource record $_ to $($dnsPZ.name)"
Add-DNSServerResourceRecordA @dnsRRA -IPv4Address $_
}
Else{
Write-Verbose "Resource record $_ exists in $($dnsPZ.name)"
}
If (!$RRB.Contains($_)){
Write-Verbose "Adding resource record $_ to $($mailPZ.name)"
Add-DNSServerResourceRecordA @mailRRA -IPv4Address $_
}
Else{
Write-Verbose "Resource record $_ exists in $($mailPZ.name)"
}
If (!$RRC.Contains($_)){
Write-Verbose "Adding resource record $_ to $($webmailPZ.name)"
Add-DNSServerResourceRecordA @webmailRRA -IPv4Address $_
}
Else{
Write-Verbose "Resource record $_ exists in $($webmailPZ.name)"
}
}
$srvRRA | ForEach-Object {
If (!$RRD.Contains($($srvRRA.DomainName))){
Write-Verbose "Adding resource record $($srvRRA.DomainName) to $($srvPZ.name)"
Add-DNSServerResourceRecord -Srv @srvRRA
}
Else{
Write-Verbose "Resource record $($srvRRA.DomainName) exists in $($srvPZ.name)"
}
}
}
END{}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment