【问题标题】:How can I set / change DNS using the command-prompt at windows 8如何在 Windows 8 上使用命令提示符设置/更改 DNS
【发布时间】:2013-09-08 08:01:30
【问题描述】:

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

我试过了:

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

但没用。

【问题讨论】:

  • 首先,以管理员身份运行cmd。

标签: windows-8 dns command-prompt


【解决方案1】:

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

netsh interface show interface

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

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

现在您可以更改主 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 设置为“自动设置”吗?
  • @Patrick:见my answer。在第二个命令中将dhcp 替换为static
  • @chue-x 与您关于“可能”的说法相反,Windows 将名称“本地连接”分配给网络连接是非常常见的。
  • @RossPresser 对于 WinXP、Vista 和 7(不确定早期版本)确实如此,但自从 Win8 更改为以太网之后。
  • 从内置命令帮助中,规范名称是“dnsservers”。不过,您只能输入“dns”、“dnsse”……甚至只能输入“d”。同样,“ip”是“ipv4”的简写。
【解决方案2】:

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

netsh interface ip set dns "Local Area Connection" dhcp

【讨论】:

    【解决方案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%
    

    【讨论】:

      【解决方案4】:

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

      即使您使用 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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

        【解决方案6】:

        添加更改 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 中测试。

        【讨论】:

        • 末尾的primary参数与主/从DNS服务器无关。此参数用于控制 DNS 客户端尝试动态注册其名称的位置(none:不注册;primary:在主 DNS 后缀注册;both:在主 DNS 后缀和连接特定的后缀)。详情请见netsh interface ipv4 set dnsservers /?
        【解决方案7】:

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

        【讨论】:

          【解决方案8】:

          这是使用 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")
          

          【讨论】:

          • 这是最好的答案。其他人都建议用 "Local Area Connection" 之类的接口名称来混淆,就好像它们是必需的一样。
          • 我同意@uvsmtid,这是最好的答案。我开始研究一个更复杂的批处理脚本,并认为必须有更好的方法。谢谢!
          • 对于 powershell 将 where (IPEnabled=TRUE) 替换为 where "IPEnabled=TRUE"
          【解决方案9】:

          这是你的新朋友:QuickSetDNS,来自 NirSoft,一如既往的棒。

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

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


          只是一些警告:

          • 只支持设置 IPv4,不支持 IPv6
            • 从 QuickSetDNS 1.30 开始,也支持设置 IPv6 DNS 服务器 ;)
          • 在命令行中,应使用适配器 UUID,而不是友好名称(例如“本地连接”)
            • 从 QuickSetDNS 1.21 开始,还支持连接名称;)

          【讨论】:

            猜你喜欢
            • 2022-01-25
            • 2012-08-15
            • 2015-09-07
            • 1970-01-01
            • 1970-01-01
            • 2014-08-30
            • 1970-01-01
            • 2014-04-16
            相关资源
            最近更新 更多