我需要经常更改DNS服务器地址,现在我可以通过打开“网络和共享中心”-“本地连接”-属性-ipv4-然后输入DNS编号来完成。
有更快的方法吗?我可以使用批处理文件或Powershell脚本吗?是否有内置的控制台命令来更改DNS?
我需要经常更改DNS服务器地址,现在我可以通过打开“网络和共享中心”-“本地连接”-属性-ipv4-然后输入DNS编号来完成。
有更快的方法吗?我可以使用批处理文件或Powershell脚本吗?是否有内置的控制台命令来更改DNS?
Answers:
主DNS值:
netsh interface ipv4 set dns "Local Area Connection" static 192.168.0.2
次要价值:
netsh interface ipv4 add dns "Local Area Connection" 192.168.0.3 index=2
如果连接名称正确,那将非常有用。如果名称不是“ Local Area Connection”,则它将不起作用。如果您运行的是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
要查找网络连接,可以在cmd行中使用ipconfig。但是,您也可以将以下内容用于缩写的ipconfig结果:
ipconfig | find /I "Ethernet adapter"
使用上面的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
还要使用DHCP服务器提供的DNS地址:
netsh interface ipv4 set dns "Local Area Connection" dhcp
在Windows 8或2012中使用Powershell脚本,您可以设置以下值:
Set-DnsClientServerAddress -InterfaceAlias Wi-Fi -ServerAddresses "1.1.1.1","2.2.2.2"
其中的Wi-Fi是你感兴趣的接口的名称您可以通过运行列表的界面:
Get-NetAdapter
要重置DNS地址,请使用DHCP:
Set-DnsClientServerAddress -InterfaceAlias wi-fi -ResetServerAddresses
转到此页面以查看完整描述。
请注意,此处使用的comandlet在早期版本(例如Windows 7)中不可用。
这是您的新朋友:NirSoft的QuickSetDNS,一如既往的令人惊奇。
与netsh相比,它也可以在命令行中使用:),具有以下优点:
请注意以下几点:
向Logman的WinXP版本(sp3希伯来语)添加一个修复程序,似乎需要在末尾删除2个字符,因此为其他任何奇怪的情况添加了一种“全局”修复程序。
:: 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 WinXP Remove some weird trailing chars (don't know what they are)
FOR /l %%a IN (1,1,255) DO IF NOT "!adapterName:~-1!"==":" SET adapterName=!adapterName:~0,-1!
REM Removes the colon from the end of the adapter name
SET adapterName=!adapterName:~0,-1!
echo !adapterName!
GOTO:EOF
netsh interface ip set dns name="!adapterName!" static x.x.x.x primary
netsh interface ip add dns name="!adapterName!" x.x.x.x index=2
)
这个答案是从XP1复制在这里。如果XP1想发布此答案,请这样做,我将删除我的答案。
这是使用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")