Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I need to frequently change the DNS server address, and for now I do it by opening 'network and sharing center' - 'local area connection' - properties - ipv4 - and then type the DNS numbers.

Is there a faster way to do it? Can I do it with a batch file or a powershell script? Is there a built in console command to change DNS?

share|improve this question
up vote 25 down vote accepted

Primary DNS value:

netsh interface ipv4 set dns "Local Area Connection" static 192.168.0.2

Secondary value:

netsh interface ipv4 add dns "Local Area Connection" 192.168.0.3 index=2

Which works great IF the name of the connection is correct. If the name isn't "Local Area Connection" then it will not work. If you are running XP you need to change "ipv4" to "ip". IPv6 can be used too.

Set subnet mask, IP Address, and Gateway:

netsh interface ipv4 set address name="Local Area Connection" source=static addr=192.168.1.10 mask=255.255.255.0 gateway=192.168.0.1

To Find the network connection you can use ipconfig from the cmd line. But you can also use the following for an abbreviated ipconfig result:

ipconfig | find /I "Ethernet adapter"

using the above ipconfig cmd we can loop through the connection and set the dns servers:

:: Set primary and alternate DNS for IPv4 on Windows Server 2000/2003/2008 & 
:: Windows XP/Vista/7
@ECHO OFF
SETLOCAL EnableDelayedExpansion

SET adapterName=

FOR /F "tokens=* delims=:" %%a IN ('IPCONFIG ^| FIND /I "ETHERNET ADAPTER"') DO (
SET adapterName=%%a

REM Removes "Ethernet adapter" from the front of the adapter name
SET adapterName=!adapterName:~17!

REM Removes the colon from the end of the adapter name
SET adapterName=!adapterName:~0,-1!

netsh interface ipv4 set dns name="!adapterName!" static 192.168.0.2 primary
netsh interface ipv4 add dns name="!adapterName!" 192.168.0.3 index=2
)

ipconfig /flushdns

:EOF
share|improve this answer
1  
Excellent answer. You should include sources for things like Quotes and Code. – Ƭᴇcʜιᴇ007 Aug 18 '12 at 5:14

Also to use DNS addresses provided by the DHCP server:

netsh interface ipv4 set dns "Local Area Connection" dhcp
share|improve this answer

Using a Powershell script in Windows 8 or 2012, you may set the values like this:

Set-DnsClientServerAddress -InterfaceAlias Wi-Fi -ServerAddresses "1.1.1.1","2.2.2.2"

Where wi-Fi is the name of the interface you're interested in. You may list the interfaces by running:

Get-NetAdapter

To reset DNS addresses and this use DHCP:

Set-DnsClientServerAddress -InterfaceAlias wi-fi -ResetServerAddresses

Go to this page to see a full description.

Note that the comandlets used here are not available in earlier versions, such as Windows 7.

share|improve this answer
    
concise, works like a charm. Thank you :) Especially useful on AWS Opsworks! – Ganesh Hegde Sep 25 '15 at 18:28

Adding a fix to Logman's version for WinXP (sp3 hebrew), seems like it need to remove 2 chars at the end so added a "global" kind of fix for any other weird case.

:: Set primary and alternate DNS for IPv4 on Windows Server 2000/2003/2008 & Windows XP/Vista/7
@ECHO OFF
SETLOCAL EnableDelayedExpansion
SET adapterName=

FOR /F "tokens=* delims=:" %%a IN ('IPCONFIG ^| FIND /I "ETHERNET ADAPTER"') DO (
SET adapterName=%%a

REM Removes "Ethernet adapter" from the front of the adapter name
SET adapterName=!adapterName:~17!

REM WinXP Remove some weird trailing chars (don't know what they are)
FOR /l %%a IN (1,1,255) DO IF NOT "!adapterName:~-1!"==":" SET adapterName=!adapterName:~0,-1!

REM Removes the colon from the end of the adapter name
SET adapterName=!adapterName:~0,-1!
echo !adapterName!
GOTO:EOF
netsh interface ip set dns name="!adapterName!" static x.x.x.x primary
netsh interface ip add dns name="!adapterName!" x.x.x.x index=2
)

http://pastebin.com/9mbMR7sy

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.