如何在Windows 8上使用命令提示符设置/更改DNS


Answers:


86

首先,网络名称可能是“以太网”,而不是“本地连接”。要找出名称,您可以执行以下操作:

netsh interface show interface

它将在“接口名称”列下显示名称(此处以粗体显示):

管理员状态状态类型接口名称
-------------------------------------------------- -----------------------
启用的连接专用        以太网

现在,假设您的接口是静态的(不使用dhcp),则可以更改主dns(索引= 1):

netsh interface ipv4 add dnsserver "Ethernet" address=192.168.x.x index=1

2018更新- 该命令将与dnsserver(单数)或dnsservers(复数)一起使用。以下示例使用后者,并且同样有效:

netsh接口ipv4添加dnsservers “以太网”地址= 192.168.xx索引= 1

奏效了,谢谢!您知道如何将DNS设置为“自动设置”吗?
patricK 2014年

1
@帕特里克:看我的答案。将dhcp代替static在第二个命令。
Adarsh Rajput 2015年

2
@ chue-x与您关于“可能”的说法相反,Windows将名称“ Local Area Connection”分配给网络连接非常普遍。
Ross Presser

2
@ GµårÐïåñ似乎您正在使用“设置”来配置主数据库。如上例所示,您将需要使用“ add”来设置辅助。只需使用index = 2。
chue x

2
在内置命令帮助中,规范名称为“ dnsservers”。不过,您只能输入“ dns”,“ dnsse” ...甚至是“ d”。同样,“ ip”是“ ipv4”的简写。
Gras Double

27

要将DNS通过命令更改为自动,可以运行以下命令:

netsh interface ip set dns "Local Area Connection" dhcp

21

这是使用WMIC(Windows Management Instrumentation命令行)更改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")

4
这是最好的答案。其他所有人都建议将接口名称(如“ Local Area Connection”)弄乱,好像它们是必需的一样。
uvsmtid

我同意@uvsmtid,这是最好的答案。我开始研究更复杂的批处理脚本,并认为必须有更好的方法。谢谢!
jacktrader18年

1
对于powershell,请替换where (IPEnabled=TRUE)where "IPEnabled=TRUE"
ndemou

20

添加更改DNS-IP的命令几乎没有区别:

加上:

Syntax:
   netsh interface ipv4 add dnsserver "Network Interface Name" dns.server.ip index=1(for primary)2(for secondary)
Eg:
   netsh interface ipv4 add dnsserver "Ethernet" 8.8.8.8 index=1
  • 在这里,要知道“网络接口名称”,请键入命令 netsh interface show interface
  • 8.8.8.8是Google的递归DNS服务器,如果您无法使用,请使用它

设置/更改:(按照OP的要求)

Syntax:
   netsh interface ipv4 set dnsservers "Network Interface Name" static dns.server.ip primary
Eg:
   netsh interface ipv4 set dnsservers "Wi-Fi" static 8.8.4.4 primary
   netsh interface ipv4 set dnsservers "Wi-Fi" dhcp
  • 最后一个参数可以是none:disable DNS,both:set分别用于主DNS和辅助DNS,primary:仅用于主DNS。您会发现这里没有像添加DNS那样使用索引参数。

  • static您的位置,您可以键入dhcp以自动进行DNS设置,但不需要其他参数。


注意:已在Windows 8,8.1&10中测试。


15

我编写了此脚本,用于将所有当前启用的接口的DNS服务器切换到特定地址:

@echo off

:: Google DNS
set DNS1=8.8.8.8
set DNS2=8.8.4.4

for /f "tokens=1,2,3*" %%i in ('netsh int show interface') do (
    if %%i equ Enabled (
        echo Changing "%%l" : %DNS1% + %DNS2%
        netsh int ipv4 set dns name="%%l" static %DNS1% primary validate=no
        netsh int ipv4 add dns name="%%l" %DNS2% index=2 validate=no
    )
)

ipconfig /flushdns

:EOF

凉。通过添加命令参数和过滤,我对您的回答有所改善:gist.github.com/n074v41l4bl34u/e237c0f199b2bb68bf1c 为什么FOR命令中的'skip = 2'选项无效?
TermoTux

13

在Windows 10上,没有任何答案对我有用,所以这是我使用的方法:

@echo off

set DNS1=8.8.8.8
set DNS2=8.8.4.4
set INTERFACE=Ethernet

netsh int ipv4 set dns name="%INTERFACE%" static %DNS1% primary validate=no
netsh int ipv4 add dns name="%INTERFACE%" %DNS2% index=2

ipconfig /flushdns

pause

这使用Google DNS。您可以使用以下命令获取接口名称netsh int show interface


3

批处理文件,用于设置新的DNS服务器

@echo off
rem usage: setdns <dnsserver> <interface>
rem default dsnserver is dhcp
rem default interface is Wi-Fi
set dnsserver="%1"
if %dnsserver%=="" set dnsserver="dhcp"
set interface="%2"
if %interface%=="" set interface="Wi-Fi"
echo Showing current DNS setting for interface a%interface%
netsh interface ipv4 show dnsserver %interface%
echo Changing dnsserver on interface %interface% to %dnsserver%
if %dnsserver% == "dhcp" netsh interface ipv4 set dnsserver %interface% %dnsserver%
if NOT %dnsserver% == "dhcp" netsh interface ipv4 add dnsserver %interface% address=%dnsserver% index=1
echo Showing new DNS setting for interface %interface%
netsh interface ipv4 show dnsserver %interface%

1

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

屏幕截图

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

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


请注意以下几点:

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

0

现在,假设您的接口是静态的(不使用dhcp),则可以更改主dns(索引= 1)

即使使用DHCP获取IP地址,也可以静态设置DNS服务器。

在Windows 7下添加两个DN服务器的示例,命令如下:

netsh interface ipv4 add dns "Local Area Connection" address=192.168.x.x index=1 netsh interface ipv4 add dns "Local Area Connection" address=192.168.x.x index=2

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.