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

如何使用 Windows8的命令提示符或 bat 文件设置 DNS 设置

我试过了:

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

但没成功。

307502 次浏览

首先,网络名称可能是“ Ethernet”,而不是“ Local Area Connection”:

netsh interface show interface

它将在“ Interface Name”列下显示名称(以粗体显示) :

Admin State    State          Type             Interface Name
-------------------------------------------------------------------------
Enabled        Connected      Dedicated        Ethernet

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

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

2018年更新- 该命令将使用 dnsserver(单数)或 dnsservers(复数)。下面的例子使用了后者,也是有效的:

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

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

netsh interface ip set dns "Local Area Connection" dhcp

用于设置新的 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 服务器。

例如,在 Windows7下添加两个 DN 服务器,命令如下:

Netsh 接口 ipv4 add dns“ Local Area Connection”address = 192.168.x.x index = 1 Netsh 接口 ipv4 add dns“ Local Area Connection”address = 192.168.x.x index = 2

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

在指挥 增加改变 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是谷歌的递归 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: 禁用 DNS,both: 设置为主 DNS 和辅助 DNS,主 DNS: 仅用于主 DNS。您可以注意到,这里我们没有像添加 DNS 时那样使用 index 参数。

  • static的地方,您可以键入 dhcp,使 DNS 设置自动,但进一步的参数将不再需要。


注: 在 windows 8,8.1及10中测试。

没有一个答案适用于我的 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

这使用谷歌 DNS。您可以得到与命令 netsh int show interface接口名称

下面是另一种使用 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")

这是你的新朋友: QuickSetDNS,由 NirSoft,一如既往的惊人。

screenshot

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

  • 更简单的语法,特别是用于设置备用服务器
  • 自动请求特权提升


以下是一些注意事项:

  • 只支援设定 IPv4,而不支援设定 IPv6
    • 自 QuickSetDNS 1.30以来,还支持设置 IPv6 DNS 服务器;)
  • 在命令行中,应该使用适配器 UUID,而不是友好名称(例如“ Local Area Connection”)
    • 自 QuickSetDNS 1.21以来,还支持连接名称;)