Skip to content

Instantly share code, notes, and snippets.

@rayterrill
Created September 25, 2017 22:06
Show Gist options
  • Save rayterrill/338b8c7aa8f8c77800831ba6b8f197ce to your computer and use it in GitHub Desktop.
Save rayterrill/338b8c7aa8f8c77800831ba6b8f197ce to your computer and use it in GitHub Desktop.
Create AWS Route53 DNS Records for Office365
Param(
[string]$domainName, #example: mydomain.com
[string]$verificationValue #example: ms23254363
)
$domain_withoutDot = $domainName -Replace '\.', '-'
#make sure you're authenticated to AWS and that you've pre-created the new hosted zone
#get the hosted zone
$R53Tenant = Get-R53HostedZonesByName | Where-Object { $_.Name -eq "$($domainName)." }
######################
# DOMAIN VERIFICATION
######################
#verification record for domain
$change1 = New-Object Amazon.Route53.Model.Change
$change1.Action = "CREATE"
$change1.ResourceRecordSet = New-Object Amazon.Route53.Model.ResourceRecordSet
$change1.ResourceRecordSet.Name = "$($domainName)."
$change1.ResourceRecordSet.Type = "TXT"
$change1.ResourceRecordSet.TTL = 3600
$change1.ResourceRecordSet.ResourceRecords.Add(@{Value="`"MS=$($verificationValue)`""})
$params = @{
HostedZoneId=$R53Tenant.ID
ChangeBatch_Comment="Adds TXT record to validate domain for Office365"
ChangeBatch_Change=$change1
}
#Edit-R53ResourceRecordSet @params
###########
# EXCHANGE
###########
#mx record
$change1 = New-Object Amazon.Route53.Model.Change
$change1.Action = "CREATE"
$change1.ResourceRecordSet = New-Object Amazon.Route53.Model.ResourceRecordSet
$change1.ResourceRecordSet.Name = "$($domainName)."
$change1.ResourceRecordSet.Type = "MX"
$change1.ResourceRecordSet.TTL = 3600
$change1.ResourceRecordSet.ResourceRecords.Add(@{Value="0 $($domain_withoutDot).mail.protection.outlook.com"})
#spf record
$change2 = New-Object Amazon.Route53.Model.Change
$change2.Action = "UPSERT"
$change2.ResourceRecordSet = New-Object Amazon.Route53.Model.ResourceRecordSet
$change2.ResourceRecordSet.Name = "$($domainName)."
$change2.ResourceRecordSet.Type = "TXT"
$change2.ResourceRecordSet.TTL = 3600
$change2.ResourceRecordSet.ResourceRecords.Add(@{Value="`"MS=$($verificationValue)`""})
$change2.ResourceRecordSet.ResourceRecords.Add(@{Value="`"v=spf1 include:spf.protection.outlook.com -all`""})
#autodiscover
$change3 = New-Object Amazon.Route53.Model.Change
$change3.Action = "CREATE"
$change3.ResourceRecordSet = New-Object Amazon.Route53.Model.ResourceRecordSet
$change3.ResourceRecordSet.Name = "autodiscover.$($domainName)."
$change3.ResourceRecordSet.Type = "CNAME"
$change3.ResourceRecordSet.TTL = 3600
$change3.ResourceRecordSet.ResourceRecords.Add(@{Value="autodiscover.outlook.com"})
$params = @{
HostedZoneId=$R53Tenant.ID
ChangeBatch_Comment="MX record for Office365"
ChangeBatch_Change=$change1,$change2,$change3
}
#Edit-R53ResourceRecordSet @params
#####################
# SKYPE FOR BUSINESS
#####################
$change1 = New-Object Amazon.Route53.Model.Change
$change1.Action = "CREATE"
$change1.ResourceRecordSet = New-Object Amazon.Route53.Model.ResourceRecordSet
$change1.ResourceRecordSet.Name = "sip.$($domainName)."
$change1.ResourceRecordSet.Type = "CNAME"
$change1.ResourceRecordSet.TTL = 3600
$change1.ResourceRecordSet.ResourceRecords.Add(@{Value="sipdir.online.lync.com"})
$change2 = New-Object Amazon.Route53.Model.Change
$change2.Action = "CREATE"
$change2.ResourceRecordSet = New-Object Amazon.Route53.Model.ResourceRecordSet
$change2.ResourceRecordSet.Name = "lyncdiscover.$($domainName)."
$change2.ResourceRecordSet.Type = "CNAME"
$change2.ResourceRecordSet.TTL = 3600
$change2.ResourceRecordSet.ResourceRecords.Add(@{Value="webdir.online.lync.com"})
$change3 = New-Object Amazon.Route53.Model.Change
$change3.Action = "CREATE"
$change3.ResourceRecordSet = New-Object Amazon.Route53.Model.ResourceRecordSet
$change3.ResourceRecordSet.Name = "_sip._tls.$($domainName)."
$change3.ResourceRecordSet.Type = "SRV"
$change3.ResourceRecordSet.TTL = 3600
$change3.ResourceRecordSet.ResourceRecords.Add(@{Value="100 1 443 sipdir.online.lync.com."})
$change4 = New-Object Amazon.Route53.Model.Change
$change4.Action = "CREATE"
$change4.ResourceRecordSet = New-Object Amazon.Route53.Model.ResourceRecordSet
$change4.ResourceRecordSet.Name = "_sipfederationtls._tcp.$($domainName)."
$change4.ResourceRecordSet.Type = "SRV"
$change4.ResourceRecordSet.TTL = 3600
$change4.ResourceRecordSet.ResourceRecords.Add(@{Value="100 1 5061 sipfed.online.lync.com."})
$params = @{
HostedZoneId=$R53Tenant.ID
ChangeBatch_Comment="Skype4B records for Office365"
ChangeBatch_Change=$change1,$change2,$change3,$change4
}
Edit-R53ResourceRecordSet @params
#####################
# MDM
#####################
$change1 = New-Object Amazon.Route53.Model.Change
$change1.Action = "CREATE"
$change1.ResourceRecordSet = New-Object Amazon.Route53.Model.ResourceRecordSet
$change1.ResourceRecordSet.Name = "enterpriseregistration.$($domainName)."
$change1.ResourceRecordSet.Type = "CNAME"
$change1.ResourceRecordSet.TTL = 3600
$change1.ResourceRecordSet.ResourceRecords.Add(@{Value="enterpriseregistration.windows.net"})
$change2 = New-Object Amazon.Route53.Model.Change
$change2.Action = "CREATE"
$change2.ResourceRecordSet = New-Object Amazon.Route53.Model.ResourceRecordSet
$change2.ResourceRecordSet.Name = "enterpriseenrollment.$($domainName)."
$change2.ResourceRecordSet.Type = "CNAME"
$change2.ResourceRecordSet.TTL = 3600
$change2.ResourceRecordSet.ResourceRecords.Add(@{Value="enterpriseenrollment.manage.microsoft.com"})
#####################
# Additional Config
#####################
$change3 = New-Object Amazon.Route53.Model.Change
$change3.Action = "CREATE"
$change3.ResourceRecordSet = New-Object Amazon.Route53.Model.ResourceRecordSet
$change3.ResourceRecordSet.Name = "msoid.$($domainName)."
$change3.ResourceRecordSet.Type = "CNAME"
$change3.ResourceRecordSet.TTL = 3600
$change3.ResourceRecordSet.ResourceRecords.Add(@{Value="clientconfig.microsoftonline-p.net"})
$params = @{
HostedZoneId=$R53Tenant.ID
ChangeBatch_Comment="Skype4B records for Office365"
ChangeBatch_Change=$change1,$change2,$change3
}
Edit-R53ResourceRecordSet @params
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment