Ändern Sie DNS mit Skript

29

Ich muss die DNS-Serveradresse häufig ändern und öffne dazu zunächst 'Netzwerk- und Freigabecenter' - 'LAN-Verbindung' - Eigenschaften - ipv4 - und gebe dann die DNS-Nummern ein.

Gibt es einen schnelleren Weg? Kann ich das mit einer Batch-Datei oder einem Powershell-Skript machen? Gibt es einen eingebauten Konsolenbefehl zum Ändern von DNS?

Endy Tjahjono
quelle

Antworten:

38

Primärer DNS-Wert:

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

Sekundärer Wert:

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

Das funktioniert super, wenn der Name der Verbindung stimmt. Wenn der Name nicht "LAN-Verbindung" ist, funktioniert dies nicht. Wenn Sie XP verwenden, müssen Sie "ipv4" in "ip" ändern. IPv6 kann ebenfalls verwendet werden.

Legen Sie die Subnetzmaske, die IP-Adresse und das Gateway fest:

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

Um die Netzwerkverbindung zu finden, können Sie ipconfig in der Zeile cmd verwenden. Sie können aber auch Folgendes für ein abgekürztes ipconfig-Ergebnis verwenden:

ipconfig | find /I "Ethernet adapter"

Mit dem obigen Befehl ipconfig können wir die Verbindung (den Quellcode ) durchlaufen und die DNS-Server einstellen:

:: 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
Logman
quelle
3
Hervorragende Antwort. Sie sollten Quellen für Dinge wie Anführungszeichen und Code einschließen .
ƬᴇcƬᴇιᴇ007
8

Verwenden Sie auch die vom DHCP-Server bereitgestellten DNS-Adressen:

netsh interface ipv4 set dns "Local Area Connection" dhcp
mmm
quelle
plus, falls Sie die Adresse / Maske / Gateway auf die von DHCP zurücksetzen möchten: netsh-Schnittstelle ipv4 set address name = "LAN-Verbindung" source = dhcp
hello_earth
6

Mithilfe eines Powershell- Skripts in Windows 8 oder 2012 können Sie die folgenden Werte festlegen:

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

Wobei Wi-Fi der Name der Schnittstelle ist, an der Sie interessiert sind. Sie können die Schnittstellen auflisten, indem Sie Folgendes ausführen:

Get-NetAdapter

So setzen Sie DNS-Adressen zurück und verwenden DHCP:

Set-DnsClientServerAddress -InterfaceAlias wi-fi -ResetServerAddresses

Gehen Sie zu dieser Seite , um eine vollständige Beschreibung zu erhalten.

Beachten Sie, dass die hier verwendeten Comandlets in früheren Versionen, wie z. B. Windows 7, nicht verfügbar sind.

Juanal
quelle
prägnant, wirkt wie ein Zauber. Vielen Dank :) Besonders nützlich für AWS Opsworks!
Ganesh Hegde
3

Hier ist dein neuer Freund: QuickSetDNS von NirSoft, erstaunlich wie immer.

Bildschirmfoto

Es kann auch in der Kommandozeile verwendet werden :) mit diesen Vorteilen gegenüber Netsh:

  • einfachere Syntax, insbesondere zum Einstellen des alternativen Servers
  • fragt automatisch nach Rechteerweiterung


Nur ein paar Vorsichtsmaßnahmen:

  • unterstützt nur die Einstellung von IPv4, nicht von IPv6
  • In der Befehlszeile sollte die UUID des Adapters verwendet werden, nicht der Anzeigename (z. B. "LAN-Verbindung"). seit QuickSetDNS 1.21 werden auch Verbindungsnamen unterstützt;)
Gras Double
quelle
Hier ist ein Open-Source-Beispiel, das denselben Ansatz wie oben verwendet: codeproject.com/Articles/20639/…
Top-Master
1

Das Hinzufügen eines Fixes zu Logmans Version für WinXP (SP3-Hebräisch) scheint das Entfernen von 2 Zeichen am Ende erforderlich zu machen. Daher wurde ein "globaler" Fix für jeden anderen seltsamen Fall hinzugefügt.

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

http://pastebin.com/9mbMR7sy

Sniffleh
quelle
0

Diese Antwort wurde von XP1 hierher kopiert . Wenn XP1 diese Antwort posten möchte, tue dies bitte und ich werde meine Antwort löschen.

Hier ist eine andere Möglichkeit, DNS mithilfe von WMIC (Windows Management Instrumentation Command-Line) zu ändern.

Die Befehle müssen als Administrator ausgeführt werden, um angewendet zu werden.

DNS-Server löschen:

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

Setze 1 DNS Server:

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

Setze 2 DNS Server:

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

Legen Sie zwei DNS-Server auf einem bestimmten Netzwerkadapter fest:

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

Ein weiteres Beispiel zum Einstellen der Domain-Suchliste:

wmic nicconfig call SetDNSSuffixSearchOrder ("domain.tld")
Nathan
quelle