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

如何在Windows 8上使用命令提示符或bat文件来设置我的DNS设置

我试过这个:

netsh interface ip set dns name="Local Area Connection" source=static addr=none 

但没有工作。

首先,networking名称可能是“以太网”,而不是“本地连接”。 要找出名字,你可以这样做:

 netsh interface show interface 

这将显示“接口名称”列下的名称(以粗体显示):

pipe理员状态状态types接口名称
 -------------------------------------------------- -----------------------
启用连接专用以太网

现在你可以改变主要的dns(index = 1),假设你的接口是静态的(不使用dhcp):

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

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

 netsh interface ip set dns "Local Area Connection" dhcp 

添加更改 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 
  • 在这里,要知道“networking接口名称”,input命令netsh interface show interface
  • 8.8.8.8是Google的recursionDNS服务器,使用它,如果你不工作的话

设置/更改 (如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 :禁用DNS, both :主要和辅助DNS都设置,主要:仅用于主要DNS。 你可以注意到在这里我们没有像添加DNS那样使用索引参数。

  • static的地方你可以inputdhcp使DNS自动设置,但是不需要进一步的参数。


注:在Windows 8,8.1和10testing。

我写了这个脚本来将所有当前启用的接口的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 

这是另一种通过使用WMIC(Windows Management Instrumentation命令行)来更改DNS的方法。

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

清除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") 

在特定networking适配器上设置2个DNS服务器:

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

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

 wmic nicconfig call SetDNSSuffixSearchOrder ("domain.tld") 

在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获取接口名称

batch file设置一个新的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% 

现在你可以改变主要的dns(index = 1),假设你的接口是静态的(不使用dhcp)

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

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

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