Ich muss die DNS-Serveradresse häufig ändern und mache das derzeit, indem ich „Netzwerk- und Freigabecenter“ – „LAN-Verbindung“ – Eigenschaften – IPv4 – öffne und dann die DNS-Nummern eingebe.
Gibt es eine schnellere Möglichkeit, dies zu tun? Kann ich es mit einer Batchdatei oder einem Powershell-Skript tun? Gibt es einen integrierten Konsolenbefehl zum Ändern des DNS?
Antwort1
Primärer DNS-Wert:
netsh interface ipv4 set dns "Local Area Connection" static 192.168.0.2
Sekundärwert:
netsh interface ipv4 add dns "Local Area Connection" 192.168.0.3 index=2
Das funktioniert hervorragend, WENN der Name der Verbindung richtig ist. Wenn der Name nicht „LAN-Verbindung“ lautet, funktioniert es nicht. Wenn Sie XP verwenden, müssen Sie „ipv4“ in „ip“ ändern. IPv6 kann auch verwendet werden.
Subnetzmaske, IP-Adresse und Gateway festlegen:
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 über die Befehlszeile verwenden. Sie können aber auch Folgendes verwenden, um ein verkürztes ipconfig-Ergebnis zu erhalten:
ipconfig | find /I "Ethernet adapter"
mit dem obigen ipconfig-Befehl können wir die Verbindung durchlaufen (Quellcode) und legen Sie die DNS-Server fest:
:: 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
Antwort2
So verwenden Sie außerdem vom DHCP-Server bereitgestellte DNS-Adressen:
netsh interface ipv4 set dns "Local Area Connection" dhcp
Antwort3
Hier ist dein neuer Freund:QuickSetDNS, von NirSoft, wie immer erstaunlich.
Es kann auch in der Befehlszeile verwendet werden :) und bietet gegenüber netsh folgende Vorteile:
- einfachere Syntax, insbesondere zum Festlegen des alternativen Servers
- fordert automatisch eine Rechteerhöhung an
Nur ein paar Vorbehalte:
unterstützt nur die Einstellung von IPv4, nicht von IPv6- seit QuickSetDNS 1.30 wird auch das Einrichten von IPv6-DNS-Servern unterstützt ;)
in der Kommandozeile sollte die Adapter-UUID verwendet werden, nicht der benutzerfreundliche Name (z.B. "LAN-Verbindung")- seit QuickSetDNS 1.21 werden auch Verbindungsnamen unterstützt ;)
Antwort4
Alle anderen Antworten verwenden netsh, das zumindest auf dem Windows 2012R2-Rechner, mit dem ich heute Morgen gearbeitet habe, Folgendes meldete:
In future versions of Windows, Microsoft might remove the Netsh functionality for TCP/IP.
Microsoft recommends that you transition to Windows PowerShell if you currently use netsh to configure and manage TCP/IP.
... nun, ich bin sicher, dass das nicht so bald der Fall sein wird, aber... es hat mich trotzdem dazu veranlasst, Powershell zu überprüfen.
Hier ist der Powershell-Weg, den ich gewählt habe, und der von einer einzigen physischen Schnittstelle ausgeht. Wenn Sie mehr haben, müssen Sie sich die richtige Schnittstelle aussuchen :)
$interface = (Get-NetAdapter).ifIndex
Set-DnsClient -InterfaceIndex $interface -ConnectionSpecificSuffix myproject.mydomain.tld
Set-DnsClientServerAddress -InterfaceIndex $interface -ServerAddresses ("8.8.8.8","8.8.4.4","2001:4860:4860::8888","2001:4860:4860::8844")
Die relevanten Dokumente (Stand 15.05.2020) sind: