Alterar DNS com script

27

Eu preciso alterar frequentemente o endereço do servidor DNS e, por enquanto, faço isso abrindo 'rede e centro de compartilhamento' - 'conexão de área local' - propriedades - ipv4 - e digite os números DNS.

Existe uma maneira mais rápida de fazer isso? Posso fazer isso com um arquivo em lotes ou um script PowerShell? Existe um comando de console embutido para alterar o DNS?

    
por Endy Tjahjono 18.08.2012 / 03:56

6 respostas

36

Valor DNS primário:

netsh interface ipv4 set dns "Local Area Connection" static 192.168.0.2

Valor secundário:

netsh interface ipv4 add dns "Local Area Connection" 192.168.0.3 index=2

Que funciona muito bem se o nome da conexão estiver correto. Se o nome não for "Conexão local", não funcionará. Se você estiver executando o XP, você precisa alterar "ipv4" para "ip". O IPv6 também pode ser usado.

Definir máscara de sub-rede, endereço IP e gateway:

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

Para encontrar a conexão de rede, você pode usar ipconfig a partir da linha cmd. Mas você também pode usar o seguinte para um resultado ipconfig abreviado:

ipconfig | find /I "Ethernet adapter"

usando o ipconfig cmd acima, podemos percorrer a conexão ( código-fonte ) e defina os servidores 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
    
por 18.08.2012 / 04:22
8

Também para usar endereços DNS fornecidos pelo servidor DHCP:

netsh interface ipv4 set dns "Local Area Connection" dhcp
    
por 08.12.2012 / 23:15
6

Usando um script Powershell no Windows 8 ou 2012, você pode definir os valores da seguinte forma:

Set-DnsClientServerAddress -InterfaceAlias Wi-Fi -ServerAddresses "1.1.1.1","2.2.2.2"

Onde wi-fi é o nome da interface em que você está interessado. Você pode listar as interfaces executando:

Get-NetAdapter

Para redefinir os endereços DNS e isso usa o DHCP:

Set-DnsClientServerAddress -InterfaceAlias wi-fi -ResetServerAddresses

Acesse esta página para ver uma descrição completa.

Observe que os comandlets usados aqui não estão disponíveis em versões anteriores, como o Windows 7.

    
por 29.04.2014 / 11:22
1

Adicionando uma correção à versão do Logman para WinXP (sp3 hebrew), Parece que ele precisa remover 2 caracteres no final, então adicionou um tipo "global" de correção para qualquer outro caso estranho.

:: 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
)

link

    
por 09.10.2014 / 20:10
0

Esta resposta é copiada do XP1 aqui . Se o XP1 quiser postar esta resposta, faça isso e eu vou deletar minha resposta.

Aqui está outra maneira de alterar o DNS usando o WMIC (linha de comando da instrumentação de gerenciamento do Windows).

Os comandos devem ser executados como administrador para serem aplicados.

Limpar servidores DNS:

wmic nicconfig where (IPEnabled=TRUE) call SetDNSServerSearchOrder ()

Definir servidor DNS 1:

wmic nicconfig where (IPEnabled=TRUE) call SetDNSServerSearchOrder ("8.8.8.8")

Defina 2 servidores DNS:

wmic nicconfig where (IPEnabled=TRUE) call SetDNSServerSearchOrder ("8.8.8.8", "8.8.4.4")

Defina 2 servidores DNS em um adaptador de rede específico:

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

Outro exemplo para definir a lista de pesquisa de domínios:

wmic nicconfig call SetDNSSuffixSearchOrder ("domain.tld")
    
por 10.11.2016 / 21:16
0

Aqui está seu novo amigo: QuickSetDNS , da NirSoft, incrível como sempre.

Eletambémpodeserusadonalinhadecomando:)comestasvantagenssobreonetsh:

  • sintaxemaisfácil,emparticularparaconfiguraroservidoralternativo
  • solicitaautomaticamenteaelevaçãodeprivilégios


Apenasalgumasressalvas:

  • suportaapenasaconfiguraçãodeIPv4,nãodeIPv6
  • nalinhadecomando,oUUIDdoadaptadordeveserusado,nãoonomeamigável(porexemplo,"Conexão local") , já que o QuickSetDNS 1.21 também suporta nomes de conexão;)
por 31.05.2018 / 03:46