Ä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?

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

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

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.


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

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


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")
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.