Posted by robd
on February 19, 2020
DNS,
powershell /
1 Comment
Here’s a brilliant PowerShell scipt to check what the DNS servers are set as accross the domain then change it:
$allservers = @()
$domainpcs = Get-ADComputer -Filter * -Properties operatingsystem | where {$_.operatingsystem -like "*Server*"} | sort name
foreach ($pc in $domainpcs)
{
if (Test-Connection $pc.DNSHostName -Quiet)
{
$thisserver = $null
$DNSsettings = $null
$DNSsettings = Get-DnsClientServerAddress -CimSession $pc.DNSHostName | where {($_.AddressFamily -eq 2) -and ($_.InterfaceAlias -notlike "Loopback*") -and ($_.InterfaceAlias -notlike "isatap*") -and ($_.ServerAddresses -ne $null)} | select @{n='DNSServers';e={$_ | select -ExpandProperty serveraddresses}},InterfaceIndex
$thisserver = New-Object psobject -Property @{
Servername = $pc.Name
interfaceindex = $DNSsettings.interfaceindex[0]
DNSsetting1 = $DNSsettings.dnsservers[0]
DNSsetting2 = $DNSsettings.dnsservers[1]
DNSsetting3 = $DNSsettings.dnsservers[2]
}
$allservers += $thisserver
$thisserver
}
}
foreach ($server in $allservers)
{
$newdns1 = $null
$newdns2 = $null
$newdns3 = $null
$needchange = $false
write-host $server.Servername -ForegroundColor Green
$newdns1 = $server.dnssetting1
$newdns2 = $server.dnssetting2
$newdns3 = $server.dnssetting3
write-host $newdns1 -ForegroundColor Red
write-host $newdns2 -ForegroundColor Red
write-host $newdns3 -ForegroundColor Red
Switch ($server.DNSsetting1)
{
"10.5.1.4" {$newdns1 = "8.8.8.8";$needchange =$true}
"10.5.1.5" {$newdns1 = "8.8.4.4";$needchange =$true}
"10.5.1.6" {$newdns1 = "1.1.1.1";$needchange =$true}
}
Switch ($server.dnssetting2)
{
"10.5.1.4" {$newdns2 = "8.8.8.8";$needchange =$true}
"10.5.1.5" {$newdns2 = "8.8.4.4";$needchange =$true}
"10.5.1.6" {$newdns2 = "1.1.1.1";$needchange =$true}
}
Switch ($server.dnssetting3)
{
"10.5.1.4" {$newdns3 = "8.8.8.8";$needchange =$true}
"10.5.1.5" {$newdns3 = "8.8.4.4";$needchange =$true}
"10.5.1.6" {$newdns3 = "1.1.1.1";$needchange =$true}
}
write-host $newdns1 -ForegroundColor Cyan
write-host $newdns2 -ForegroundColor Cyan
write-host $newdns3 -ForegroundColor Cyan
$needchange
if ($needchange)
{
Set-DnsClientServerAddress -cimsession $server.servername -InterfaceIndex $server.interfaceindex -ServerAddresses ($newdns1,$newdns2,$newdns3) -whatif
}
}
Tags: DNS, PowerShell
Posted by robd
on November 22, 2019
Active Directory,
DNS,
powershell /
1 Comment
Handy bit of PowerShell my bestest ever friend wrote to check DNS accross domain controllers:
#do dns servers agree for dns
$results = $null
$results = @()
$DNSServers = Get-ADDomainController -Filter *
$hostname = Read-Host('enter dns record to check')
foreach ($DNSServer in $DNSServers)
{
$dnsrecord = Resolve-DnsName -Name $hostname -Server $DNSServer.HostName -Type A
$result = New-Object psobject -Property @{
dnsserver = $DNSServer.Name
hostname = $dnsrecord.name
IPAddress = $dnsrecord.ipaddress
}
$results += $result
}
$results | select hostname,ipaddress,dnsserver | sort ipaddress
Tags: DNS, PowerShell
Posted by robd
on May 08, 2014
DNS /
No Comments
Hi All,
My company uses a sub domain for a satellite office, all works fine and replication takes places etc etc.
The problem I had was with DNS. I’m based in Contoso.local and I cannot ping any device the sub-domain Sub.contoso.local without fully qualifying the domain.
For example if I ping a server1 on the subdomain using
"Ping Server1"
DNS cannot route the command where as if I type
"Ping Server1.sub.contose.local"
it works fine.
I’ve checked DNS on Contoso.local and there are conditional forwarders to Sub.contoso.local:

So how can I get around this?? The answer is to add a DNS Suffix locally or to all the domain devices via group policy:
Group policy:
Computer Policy > Policies > Administrative Templates > Network/DNS Client > DNS Suffix Search List.

Then GPUPDATE /force your client and run IPCONFIG /ALL and you should see:

Tags: AD, CMD, DNS, domain, Group Policy, Server 2008, subdomain
Posted by robd
on May 07, 2013
DCPROMO,
DHCP,
DNS /
No Comments
Today was an interesting, over the bank holiday I demoted an old 2003 domain controller, let’s call it Server1.
All went to plan, changed the IP address of the DNS on the network card and ran DCPROMO, nexting through all the options.
Reboot, ran a few tests:
DCDIAG on all the remaining domain controllers,
REPADMIN /REPLSUMMARY to test replication,
Logged onto a few PC’s to check they could authenticate ok.
Well that all seemed fine and all the results were great.
Tuesday comes round and I turn up to bedlam!!
Around 20 or 30 machines were referencing Server1 for DNS and since the dcpromo the DNS server only had Active Directory integrated DNS running meaning users couldn’t get to a host of sites!!
The question was though, why on earth were they referencing Server1?
To try and resolve I did the normal client side:
Rebooted the client,
IPCONFIG /Release,
IPCONFIG /Renew,
IPCONFIG /FlushDNS,
Changed the settings in the registry: HKLM/CCS/Services/TCP/Parameters
But no matter what I did the DNS server reverted back.
So after some thought I logged onto Sercver1 and checked DHCP because as you know DHCP assigns DNS and the default gateway etc to clients.
The service was enabled which worried me slightly and the Scopes were disabled but more importantly the Server options were all referencing the wrong server!! So I quickly changed the options then disabled the DHCP service.
Rebooted the clients and Bam, everything was back up and running as it should.
For some strange reason the clients were using the wrong DHCP server along with its incorrect settings.
So I urge you if you have this problem check all your DHCP server first!!
Tags: clients, DCPROMO, DHCP, DNS, IP, IP Address, Scope, server