Solved

Powershell script to configure DNS setting

Posted on 2016-07-15
3
32 Views
Last Modified: 2016-07-28
Need some help

I need to come up with a Powershell script to change multiple Domain Controllers DNS settings.  

Please note: Ip address does not need to change, only dns address & dns search order

Sites 1&,2 should have dns address: 172.16.10.12, 172.16.10.13 (search order test.lab, testb.lab)   &  Site 3 should have 172.16.10.13, 172.16.10.14, 172.16.10.12 (Search order Testb.lab, Test.lab)

DNS Settings:  172.16.10.12, 172.16.10.13, 172.16.10.14      
DNS Search order:  Test.lab, TestB.lab

I will like to use either csv(import-csv) or txt(get-content) file will lists all of my DC's.    CSV file will likely have columns which lists DNS address, DNS search order, Site Location.

Example
Test.lab
Domain controllers, DC1,DC2,DC3,DC4,DC5,DC6 ,DC7,DC8,DC9

Site 1 - DC1,DC2,DC3
Site 2 - DC4,DC5,DC6
Site 3 - DC7,DC8,DC9

Please note: The reason I list the sites so that I can organize which DC's will receive DNS settings and DNS search order base on its site location.
0
Comment
Question by:JCJohnson76
  • 2
3 Comments
 
LVL 69

Expert Comment

by:Qlemo
ID: 41712939
Your text or CSV file does not allow to assign the DNS suffix search order. Best structure would be
site,dc
1, DC1
1, DC2
1, DC3
2, DC4
2, DC5
...

Open in new window

and another one for DNS and suffixes
site, DNS, order
1, "172.16.10.12, 172.16.10.13, 172.16.10.14", "Test.lab, TestB.lab"
...

Open in new window

Which OS are those DCs running? W8/2012 allows to use some cmdlets, prior OS requires to use e.g. netsh.
0
 

Author Comment

by:JCJohnson76
ID: 41712965
Running 2008 R2 DC's,

Can you provide detail syntax on the setup of this solution,  

Thanks for the reply, & getting back to so soon
0
 
LVL 69

Accepted Solution

by:
Qlemo earned 500 total points
ID: 41713150
That's getting pretty involved. Looks like we have to mix up some different tools.
Are you able to run PS commands remotely (using WSMAN) on those DCs?
As an intermediate step, here what I would run locally using variables as they came from the CSVs I suggested:
$DNSServers = '172.16.10.12, 172.16.10.13, 172.16.10.14'
$DNSSuffixes = 'test.lab, testb.lab'
Set-ItemProperty HKLM:System\CurrentControlSet\Services\TCPIP\Parameters SearchList $DNSSuffixes
set idx=1
$DNSServers.Split(',') | 
  % {
    if ($idx -eq 1) {
      "set dnsservers ""LAN""  $_ "
    } else {
      "add dnsservers ""LAN"" $_ index=$idx no"
    }
    $idx++
  } | netsh interface IP

Open in new window

0

Featured Post

Does Powershell have you tied up in knots?

Managing Active Directory does not always have to be complicated.  If you are spending more time trying instead of doing, then it's time to look at something else. For nearly 20 years, AD admins around the world have used one tool for day-to-day AD management: Hyena. Discover why

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Microsoft Windows Server Update Service (WSUS) is free for everyone, but it lacks of some desirable features like send an e-mail to the administrator with the status of all computers on the WSUS server. This article is based on my PowerShell script …
The following article is intended as a guide to using PowerShell as a more versatile and reliable form of application detection in SCCM.
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…

786 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question