DNS mit Skript ändern

DNS mit Skript ändern

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.

Bildschirmfoto

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:

verwandte Informationen