使用脚本更改 DNS

End*_*ono 33 windows-7 script

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

有没有更快的方法来做到这一点?我可以使用批处理文件或 powershell 脚本来完成吗?是否有内置的控制台命令来更改 DNS?

Log*_*man 42

主 DNS 值:

netsh interface ipv4 set dns "Local Area Connection" static 192.168.0.2
Run Code Online (Sandbox Code Playgroud)

次要值:

netsh interface ipv4 add dns "Local Area Connection" 192.168.0.3 index=2
Run Code Online (Sandbox Code Playgroud)

如果连接名称正确,则效果很好。如果名称不是“本地连接”,则它将不起作用。如果您运行的是 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
Run Code Online (Sandbox Code Playgroud)

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

ipconfig | find /I "Ethernet adapter"
Run Code Online (Sandbox Code Playgroud)

使用上面的 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
Run Code Online (Sandbox Code Playgroud)

  • 优秀的答案。你应该包括 [sources](http://mumblestiltskin.blogspot.com/2011/05/windows-add-multiple-dns-servers-to-nic.html?showComment=1314135113009#c3322198206611296079) 和代码之类的东西。 (3认同)

小智 9

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

netsh interface ipv4 set dns "Local Area Connection" dhcp
Run Code Online (Sandbox Code Playgroud)


Gra*_*ble 8

这是您的新朋友:QuickSetDNS,由 NirSoft 提供,一如既往的出色。

截屏

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

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


只是一些警告:

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


小智 6

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

Set-DnsClientServerAddress -InterfaceAlias Wi-Fi -ServerAddresses "1.1.1.1","2.2.2.2"
Run Code Online (Sandbox Code Playgroud)

其中wi-Fi是您感兴趣的接口的名称。您可以通过运行列出接口:

Get-NetAdapter
Run Code Online (Sandbox Code Playgroud)

要重置 DNS 地址并使用 DHCP:

Set-DnsClientServerAddress -InterfaceAlias wi-fi -ResetServerAddresses
Run Code Online (Sandbox Code Playgroud)

转到此页面查看完整说明。

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