Wie kann ich DNS über die Eingabeaufforderung unter Windows 8 einstellen / ändern?


77

Wie kann ich meine DNS-Einstellungen über die Eingabeaufforderung oder die Bat-Datei unter Windows 8 festlegen?

Ich habe es versucht:

netsh interface ip set dns name="Local Area Connection" source=static addr=none

aber nicht funktioniert.


2
Führen Sie zunächst cmd als Administrator aus.
Jet

Antworten:


86

Erstens lautet der Netzwerkname wahrscheinlich "Ethernet", nicht "LAN-Verbindung". Um den Namen herauszufinden, können Sie dies tun:

netsh interface show interface

Daraufhin wird der Name in der Spalte "Schnittstellenname" angezeigt (hier fett gedruckt):

Admin-Status Status Typ Schnittstellenname
-------------------------------------------------- -----------------------
Aktiviertes verbundenes dediziertes         Ethernet

Jetzt können Sie die primären DNS ändern (Index = 1), vorausgesetzt, Ihre Schnittstelle ist statisch (ohne DHCP):

netsh interface ipv4 add dnsserver "Ethernet" address=192.168.x.x index=1

Update 2018 - Der Befehl funktioniert entweder mit dnsserver(Singular) oder dnsservers(Plural). Das folgende Beispiel verwendet letzteres und ist ebenfalls gültig:

netsh interface ipv4 add dnsservers "Ethernet" -Adresse = 192.168.xx index = 1

Es hat funktioniert, danke! Wissen Sie, wie Sie den DNS auf "automatische Einstellungen" einstellen?
patricK

1
@ Patrick: Siehe meine Antwort . Anstelle dhcpdes staticzweiten Befehls setzen.
Adarsh ​​Rajput

2
@ chue-x Im Gegensatz zu Ihrer Aussage über das, was „wahrscheinlich“, es ist extrem häufig für Windows den Namen „LAN - Verbindung“ zu einer Netzwerkverbindung zu übertragen.
Ross Presser

2
@ GµårÐïåñ Es sieht so aus, als würden Sie "set" verwenden, um die primäre zu konfigurieren. Sie müssen "add" verwenden, wie in meinen obigen Beispielen, um die sekundäre zu setzen. Verwenden Sie einfach index = 2.
Chue x

2
In der integrierten Befehlshilfe lautet der kanonische Name "dnsservers". Sie können jedoch nur "dns", "dnsse" oder sogar nur "d" eingeben. Ebenso ist "ip" eine Abkürzung für "ipv4".
Gras Double

27

Um DNS über Befehl auf automatisch zu ändern, können Sie den folgenden Befehl ausführen:

netsh interface ip set dns "Local Area Connection" dhcp

21

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.

Löschen Sie DNS-Server:

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

Stellen Sie 1 DNS-Server ein:

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

Stellen Sie 2 DNS-Server ein:

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

Stellen Sie 2 DNS-Server auf einem bestimmten Netzwerkadapter ein:

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

Ein weiteres Beispiel zum Festlegen der Domain-Suchliste:

wmic nicconfig call SetDNSSuffixSearchOrder ("domain.tld")

4
Dies ist die beste Antwort. Alle anderen schlägt Chaos mit Interface - Namen wie „Local Area Connection“ als ob sie erforderlich sind.
Uvsmtid

Ich stimme @uvsmtid zu, dies ist die beste Antwort. Ich begann an einem viel komplizierteren Batch-Skript zu arbeiten und dachte, es müsste einen besseren Weg geben. Vielen Dank!
Jacktrader

1
Für Powershell ersetzen where (IPEnabled=TRUE)durch where "IPEnabled=TRUE".
Ndemou

20

Es gibt kaum Unterschiede beim Befehl zum Hinzufügen UND Ändern von DNS-IPs:

Hinzufügen:

Syntax:
   netsh interface ipv4 add dnsserver "Network Interface Name" dns.server.ip index=1(for primary)2(for secondary)
Eg:
   netsh interface ipv4 add dnsserver "Ethernet" 8.8.8.8 index=1
  • Geben Sie hier den Befehl ein, um "Name der Netzwerkschnittstelle" zu erfahren netsh interface show interface
  • 8.8.8.8 ist der rekursive DNS-Server von Google. Verwenden Sie ihn, wenn Ihr Server nicht funktioniert

Einstellen / Ändern: (wie OP dies verlangt hat)

Syntax:
   netsh interface ipv4 set dnsservers "Network Interface Name" static dns.server.ip primary
Eg:
   netsh interface ipv4 set dnsservers "Wi-Fi" static 8.8.4.4 primary
   netsh interface ipv4 set dnsservers "Wi-Fi" dhcp
  • Der letzte Parameter kann sein none: DNS deaktivieren , both: sowohl für primäres als auch für sekundäres DNS festgelegt, primär: nur für primäres DNS. Sie können hier feststellen, dass wir den Indexparameter nicht wie beim Hinzufügen von DNS verwenden.

  • Anstelle von können staticSie eingeben dhcp, um die DNS-Einstellung automatisch zu machen, aber weitere Parameter sind nicht erforderlich.


Hinweis: Getestet in Windows 8, 8.1 und 10.


15

Ich habe dieses Skript geschrieben, um DNS-Server aller derzeit aktivierten Schnittstellen auf eine bestimmte Adresse umzustellen:

@echo off

:: Google DNS
set DNS1=8.8.8.8
set DNS2=8.8.4.4

for /f "tokens=1,2,3*" %%i in ('netsh int show interface') do (
    if %%i equ Enabled (
        echo Changing "%%l" : %DNS1% + %DNS2%
        netsh int ipv4 set dns name="%%l" static %DNS1% primary validate=no
        netsh int ipv4 add dns name="%%l" %DNS2% index=2 validate=no
    )
)

ipconfig /flushdns

:EOF

Cool. Ich habe Ihre Antwort durch Hinzufügen von Befehlsparametern und Filtern verbessert: gist.github.com/n074v41l4bl34u/e237c0f199b2bb68bf1c Irgendwelche Vorschläge, warum meine Option ' skip = 2' im FOR-Befehl nicht funktioniert?
TermoTux

13

Keine der Antworten funktioniert unter Windows 10 für mich. Daher verwende ich Folgendes:

@echo off

set DNS1=8.8.8.8
set DNS2=8.8.4.4
set INTERFACE=Ethernet

netsh int ipv4 set dns name="%INTERFACE%" static %DNS1% primary validate=no
netsh int ipv4 add dns name="%INTERFACE%" %DNS2% index=2

ipconfig /flushdns

pause

Dies verwendet Google DNS. Sie können den Namen der Schnittstelle mit dem Befehl abrufennetsh int show interface


3

Batch-Datei zum Einstellen eines neuen DNS-Servers

@echo off
rem usage: setdns <dnsserver> <interface>
rem default dsnserver is dhcp
rem default interface is Wi-Fi
set dnsserver="%1"
if %dnsserver%=="" set dnsserver="dhcp"
set interface="%2"
if %interface%=="" set interface="Wi-Fi"
echo Showing current DNS setting for interface a%interface%
netsh interface ipv4 show dnsserver %interface%
echo Changing dnsserver on interface %interface% to %dnsserver%
if %dnsserver% == "dhcp" netsh interface ipv4 set dnsserver %interface% %dnsserver%
if NOT %dnsserver% == "dhcp" netsh interface ipv4 add dnsserver %interface% address=%dnsserver% index=1
echo Showing new DNS setting for interface %interface%
netsh interface ipv4 show dnsserver %interface%

1

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 der Erhöhung der Berechtigungen


Nur ein paar Einschränkungen:

  • unterstützt nur die Einstellung von IPv4, nicht von IPv6
  • In der Befehlszeile sollte die Adapter-UUID verwendet werden, nicht der Anzeigename (z. B. "LAN-Verbindung"). seit QuickSetDNS 1.21 werden auch Verbindungsnamen unterstützt;)

0

Jetzt können Sie den primären DNS ändern (Index = 1), vorausgesetzt, Ihre Schnittstelle ist statisch (ohne DHCP).

Sie können Ihre DNS-Server statisch einstellen, auch wenn Sie DHCP verwenden, um Ihre IP-Adresse zu erhalten.

Beispiel unter Windows 7 zum Hinzufügen von zwei DN-Servern lautet der Befehl wie folgt:

netsh interface ipv4 add dns "Local Area Connection" address=192.168.x.x index=1 netsh interface ipv4 add dns "Local Area Connection" address=192.168.x.x index=2

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.