使用脚本更改DNS


29

我需要经常更改DNS服务器地址,现在我可以通过打开“网络和共享中心”-“本地连接”-属性-ipv4-然后输入DNS编号来完成。

有更快的方法吗?我可以使用批处理文件或Powershell脚本吗?是否有内置的控制台命令来更改DNS?

Answers:


38

主DNS值:

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

次要价值:

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

如果连接名称正确,那将非常有用。如果名称不是“ Local Area Connection”,则它将不起作用。如果您运行的是XP,则需要将“ ipv4”更改为“ ip”。也可以使用IPv6。

设置子网掩码,IP地址和网关:

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

要查找网络连接,可以在cmd行中使用ipconfig。但是,您也可以将以下内容用于缩写的ipconfig结果:

ipconfig | find /I "Ethernet adapter"

使用上面的ipconfig cmd,我们可以遍历连接(源代码)并设置dns服务器:

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

3
极好的答案。你应该包括资源搞什么行情和代码。
2012年

8

还要使用DHCP服务器提供的DNS地址:

netsh interface ipv4 set dns "Local Area Connection" dhcp

另外,如果您要将地址/掩码/网关重置为DHCP的地址,请执行以下操作:netsh interface ipv4 set address name =“ Local Area Connection” source = dhcp
hello_earth

6

在Windows 8或2012中使用Powershell脚本,您可以设置以下值:

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

其中的Wi-Fi是你感兴趣的接口的名称您可以通过运行列表的界面:

Get-NetAdapter

要重置DNS地址,请使用DHCP:

Set-DnsClientServerAddress -InterfaceAlias wi-fi -ResetServerAddresses

转到此页面以查看完整描述。

请注意,此处使用的comandlet在早期版本(例如Windows 7)中不可用。


简洁,就像魅力。谢谢:)在AWS Opsworks上特别有用!
Ganesh Hegde

3

这是您的新朋友:NirSoft的QuickSetDNS,一如既往的令人惊奇。

屏幕截图

与netsh相比,它也可以在命令行中使用:),具有以下优点:

  • 更简单的语法,尤其是在设置备用服务器时
  • 自动要求特权提升


请注意以下几点:

  • 仅支持IPv4的设置,不支持IPv6的设置
  • 在命令行中,应该使用适配器UUID,而不是友好名称(例如“ Local Area Connection”) 从QuickSetDNS 1.21开始,还支持连接名称;)

这里要说的是不使用相同的方法和上面一个开放源代码的样本:codeproject.com/Articles/20639/...
顶级大师

1

向Logman的WinXP版本(sp3希伯来语)添加一个修复程序,似乎需要在末尾删除2个字符,因此为其他任何奇怪的情况添加了一种“全局”修复程序。

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


0

这个答案是从XP1复制在这里。如果XP1想发布此答案,请这样做,我将删除我的答案。

这是使用WMIC(Windows管理规范命令行)更改DNS的另一种方法。

这些命令必须以管理员身份运行才能应用。

清除DNS服务器:

wmic nicconfig where (IPEnabled=TRUE) call SetDNSServerSearchOrder ()

设置1个DNS服务器:

wmic nicconfig where (IPEnabled=TRUE) call SetDNSServerSearchOrder ("8.8.8.8")

设置2个DNS服务器:

wmic nicconfig where (IPEnabled=TRUE) call SetDNSServerSearchOrder ("8.8.8.8", "8.8.4.4")

在特定的网络适配器上设置2个DNS服务器:

wmic nicconfig where "(IPEnabled=TRUE) and (Description = 'Local Area Connection')" call SetDNSServerSearchOrder ("8.8.8.8", "8.8.4.4")

设置域搜索列表的另一个示例:

wmic nicconfig call SetDNSSuffixSearchOrder ("domain.tld")
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.