Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $MagicZoneName = "magic"
- $ZoneName = "jivedev.com"
- #Check to make sure that this is a DNS server.
- $DNSServerObject = Get-DnsServer -ComputerName $Env:Computername
- If (!($DNSServerObject)) {Throw "$Env:Computername is not a DNS Server." }
- #Get this server's AD site name
- $SiteName = [System.DirectoryServices.ActiveDirectory.ActiveDirectorySite]::GetComputerSite().Name.ToLower()
- #Check for the existence of the "Magic" zone. If it's not there, create it.
- if ($DNSServerObject.ServerZone.ZoneName -notcontains $MagicZoneName) {
- $ObjWMIClass = [wmiclass]"root\MicrosoftDNS:MicrosoftDNS_Zone"
- $ObjWMIClass.CreateZone($MagicZoneName, 0, $False)
- }
- #Gather records from this site's "control" subdomain (e.g. "magic-pdx")
- $NonMagicRecords = @()
- Foreach ($Record in $(Get-DnsServerResourceRecord -ZoneName $ZoneName | ? Hostname -match "\.$MagicZoneName-$sitename")) {
- $NonMagicRecords += $Record | Select-Object *, @{Expression={$ZoneName}; Label="ZoneName"}, @{Expression={($Record.hostname -split "\.")[0]}; Label="ShortName"}
- }
- #Check the other control subdomains for records that this one doesn't have and then add this to this one, ensuring reliable resolution.
- Foreach ($Record in $(Get-DnsServerResourceRecord -ZoneName $ZoneName | ? Hostname -match "\.$MagicZoneName-" | ? Hostname -notmatch "$sitename" )) {
- if ($NonMagicRecords.ShortName -notcontains ($Record.hostname -split "\.")[0]){
- $NonMagicHostname = "$(($Record.hostname -split "\.")[0]).$MagicZoneName-$sitename"
- Add-DnsServerResourceRecordCName -ZoneName $ZoneName -Name $NonMagicHostname -HostNameAlias $Record.RecordData.HostnameAlias
- $Record = Get-DnsServerResourceRecord -ZoneName $ZoneName | ? Hostname -match $NonMagicHostname
- $NonMagicRecords += $Record | Select-Object *, @{Expression={$ZoneName}; Label="ZoneName"}, @{Expression={($Record.hostname -split "\.")[0]}; Label="ShortName"}
- }
- }
- #Get the current list of records in this server's "Magic" zone.
- $MagicRecords = Get-DnsServerZone -zone $MagicZoneName | Get-DnsServerResourceRecord | ? Hostname -NotMatch "@"
- #Add new "magic" records, update existing records.
- Foreach ($Record in $NonMagicRecords) {
- if ($MagicRecords.hostname -notcontains $Record.ShortName) {
- Add-DnsServerResourceRecordCName -ZoneName $MagicZoneName -Name $Record.ShortName -HostNameAlias "$($Record.Hostname).$($Record.ZoneName)"
- } else {
- $ExistingMagicRecord = Get-DNSServerResourceRecord -ZoneName $MagicZoneName -Name $Record.ShortName
- $UpdatedMagicRecord = $ExistingMagicRecord.clone()
- $UpdatedMagicRecord.RecordData.HostNameAlias = "$($Record.Hostname).$($Record.ZoneName)"
- Set-DnsServerResourceRecord -ZoneName $MagicZoneName -NewInputObject $UpdatedMagicRecord -OldInputObject $ExistingMagicRecord
- }
- }
- $MagicRecords = Get-DnsServerZone -zone $MagicZoneName | Get-DnsServerResourceRecord | ? Hostname -NotMatch "@"
- Foreach ($Record in $MagicRecords) {
- if (!(Get-DnsServerResourceRecord -ZoneName $Zonename -Name $Record.Hostname -ErrorAction SilentlyContinue)) {
- Add-DNSServerResourceRecordCName -ZoneName $ZoneName -Name $Record.Hostname -HostNameAlias "$($Record.Hostname).$MagicZoneName"
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement