Powershell script to configure DNS setting

JCJohnson76
JCJohnson76 used Ask the Experts™
on
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.
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Qlemo"Batchelor", Developer and EE Topic Advisor
Top Expert 2015

Commented:
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.

Author

Commented:
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
"Batchelor", Developer and EE Topic Advisor
Top Expert 2015
Commented:
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

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial