How do I change DNS Primary and Secondary Server IP addresses with WMI

We are installing new domain controllers with new static IP addresses.  I will therefore have to change the entries for the Primary and Secondary DNS Server entries in the TCPIP properties of the NIC card for each of our Windows XP workstations.  How can I do this with a WMI command for a range of IP addresses?  Thanks in advance!
Scott LewisInformation Security OfficerAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

How many machines do you have to change this on?  It might be time to think about implementing a DHCP server.

At the same time, this might help:
Joseph DalyCommented:
Hmmm are you running DHCP? If so you can set your primary and secondary DNS server with options.
It would be option 6 for DNS servers.
Joseph DalyCommented:
Real quick I just took a screenshot of my DHCP server options. I blanked out our DNS servers but you get the idea.
10 Tips to Protect Your Business from Ransomware

Did you know that ransomware is the most widespread, destructive malware in the world today? It accounts for 39% of all security breaches, with ransomware gangsters projected to make $11.5B in profits from online extortion by 2019.

Joseph DalyCommented:
And here is a little VB script to do the same with WMI. Change the addresses to match your own.
' From the book "Windows Server 2003 Networking Recipes"
' This code will configure the local computer
'   with two DNS servers: and
strComputer = "."
arrDNSServers = Array("", "")
' --------- END CONFIGURATION ------
Set objWMIService = GetObject("winmgmts:" _
  & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set Nics = objWMIService.ExecQuery _
  ("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
For Each Nic In Nics
  intSetDNSServers = Nic.SetDNSServerSearchOrder(arrDNSServers)
  If intSetDNSServers = 0 Then
    WScript.Echo " DNS Servers set!"
    WScript.Echo " Error setting DNS server info."
  End If

Open in new window

Scott LewisInformation Security OfficerAuthor Commented:
We run all Static IP addresses throughut our these options still apply?
The link I sent you or VB script posted by xxdcmast do.  You should really look into DHCP if you have many machines.  It provides a lot of flexibility in situations like this.  
Joseph DalyCommented:
The VB script I put up there will work for you then. But I would definitley say that going with a DHCP server is your best option. It isnt really that difficult to setup probably under an hour maybe a little more if its your first time. No more tracking static addresses, no more possibility of duplicate IP conflicts etc. Add in the server and scope options and you are looking good.

Step by step if you do decide to do a DHCP server install. 
Scott LewisInformation Security OfficerAuthor Commented:
In your script....I put the new IP addresses for our DNS servers in these two places...correct?
with two DNS servers: and and here arrDNSServers = Array("", "")

Where do I put the range of IP addresses for the affected XP workstations or this is to go in the logon script??

If it goes in the logon do I call it or insert it into our existing logon script?  I have never done this.  Sorry for such a dumb question....

We are actually looking at DHCP....just a lot going on right now and don't want to throw another thing into the mix.

Scott LewisInformation Security OfficerAuthor Commented:
xxdcmast: ----->  Would you be so kind to answer the question above.  Thanks so much!
Joseph DalyCommented:
That script above doesnt allow you to do multiple machines. Basically it only runs it on the single local machine you run it on.

In the comments you can see the message below.
"This code will configure the local computer with two DNS servers: and"

So you would need to run this on all of the machines you would need to configure. You could do this with a logon script or some other remote code execution tool. You may want to take a look at PSexec for running the commands on a remote machine.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Joseph DalyCommented:
What did you decide to use?
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.