PowerShell-Skript zum Ändern des DNS unter Windows 10 und 11

Sowohl unter Windows 10 als auch unter Windows 11 können Sie die DNS-Adresse Ihres Computers über die Einstellungen-App ändern. Es handelt sich um einen recht einfachen Vorgang, der jedoch viele Klicks und Tastenanschläge erfordert. Außerdem müssen Sie zunächst wissen, wo sich die Option zum Bearbeiten der DNS-Einstellungen befindet. Wenn Sie den Vorgang beschleunigen möchten, können Sie mein PowerShell-Skript verwenden, um die DNS-IP-Adresse zu ändern. Bei der Ausführung werden die aktuellen DNS-Adressen aller Ihrer Netzwerkadapter angezeigt und Sie können eine benutzerdefinierte DNS-Adresse festlegen, sowohl primäre als auch sekundäre Adressen.

PowerShell-Skript zum Ändern der DNS-IP-Adresse (primär und sekundär)

Hier ist das PowerShell-Skript, mit dem Sie die DNS-Einstellungen in Windows ändern können.

Advertisement

<#
  Script Name: DNS Configuration Tool
  Description: This script changes the DNS settings for all active network adapters in Windows.
  Author: Bashkarla Vamsi
  URL: https://windowsloop.com
#>

function Get-ValidIPAddress {
   param (
       [string]$prompt,
       [bool]$allowEmpty = $false
   )
   do {
       $ip = Read-Host -Prompt $prompt
       if ($allowEmpty -and $ip -eq "") {
           return $null
       }
       $ipValid = $ip -match '^d{1,3}(.d{1,3}){3}$' -and ($ip.Split('.') | ForEach-Object {$_ -ge 0 -and $_ -le 255})
       if (-not $ipValid) {
           Write-Host "Invalid IP address. Please enter a valid IPv4 address or leave blank if optional." -ForegroundColor Red
       }
   } while (-not $ipValid)
   return $ip
}

function DisplayCurrentDNS {
   param (
       [string]$description,
       [System.Management.Automation.PSObject]$adapters
   )
   Write-Host "`n$description" -ForegroundColor Cyan
   foreach ($adapter in $adapters) {
       $dns = (Get-DnsClientServerAddress -InterfaceIndex $adapter.InterfaceIndex).ServerAddresses
       $dnsString = if ($dns) { $dns -join ', ' } else { "Not Set" }
       Write-Host "Adapter: $($adapter.Name) - DNS: $dnsString" -ForegroundColor Yellow
   }
}

# Get all network adapters that are enabled
$adapters = Get-NetAdapter | Where-Object { $_.Status -eq 'Up' }

# Display current DNS settings
DisplayCurrentDNS -description "Current DNS Settings:" -adapters $adapters

# Ask for Primary and Secondary DNS addresses
$primaryDNS = Get-ValidIPAddress -prompt 'Primary DNS'
$secondaryDNS = Get-ValidIPAddress -prompt 'Secondary DNS (leave blank if not needed)' -allowEmpty $true

# Set DNS servers for each adapter and display changes
foreach ($adapter in $adapters) {
   Write-Host "`nSetting DNS for adapter: $($adapter.Name)" -ForegroundColor Green
   $dnsSettings = @($primaryDNS) + @($secondaryDNS | Where-Object { $_ }) # Only add secondary if not null
   try {
       Set-DnsClientServerAddress -InterfaceIndex $adapter.InterfaceIndex -ServerAddresses $dnsSettings -ErrorAction Stop
       Write-Host "DNS changed successfully for $($adapter.Name)" -ForegroundColor Green
   } catch {
       Write-Host "Failed to change DNS for $($adapter.Name)" -ForegroundColor Red
   }
}

# Display new DNS settings
DisplayCurrentDNS -description "New DNS Settings:" -adapters $adapters

Verwenden des Skripts zum Aktualisieren des DNS

Speichern Sie das Skript auf Ihrem Computer

Klicken Sie zunächst auf Start Klicken Sie auf die Schaltfläche auf Ihrem Desktop und suchen Sie nach Notizblockund klicken Sie Offen.

Im Notepad-Fenster Kopieren (Strg + C) das Skript und Paste (Strg + V) in Notepad.

Drücke den Datei > Speichern als Möglichkeit.

Advertisement

Klicken Sie auf Datei und speichern Sie es dann im Notizblock

Wählen Sie einen Ordner zum Speichern der Datei aus und legen Sie fest change-dns.ps1 Als „Dateiname“ wählen Sie aus Alle Dateien aus dem Dropdown-Menü „Dateityp“ und klicken Sie auf Speichern.

Notiz: Du musst benutzen .ps1 als Dateierweiterung.

Speichern Sie die Datei im PS1-Format

Führen Sie das Skript aus

Notiz: Sie benötigen Administratorrechte, um DNS-Einstellungen mithilfe des PowerShell-Skripts zu ändern.

Klicken Sie zunächst mit der rechten Maustaste auf Start Klicken Sie auf die Schaltfläche in der Taskleiste und wählen Sie die aus Terminal (Admin) Möglichkeit. Benutzer von Windows 10 können PowerShell (Admin) auswählen.

Öffnen Sie das Windows-Terminal als Administrator Windows 11

Standardmäßig ist die Ausführungsrichtlinie von PowerShell eingeschränkt und erlaubt Ihnen nicht, Skripte auszuführen. Um dies zu ändern, führen Sie den folgenden Befehl aus. Es setzt die Ausführungsrichtlinie auf RemoteSigned Damit können wir unser Skript ausführen.

Set-ExecutionPolicy RemoteSigned
Legen Sie die PowerShell-Ausführungsrichtlinie auf „RemoteSigned“ fest

Als nächstes verwenden Sie den CD-Befehl wie unten gezeigt, um zu dem Ordner zu wechseln, in dem Sie das Skript gespeichert haben.

cd "C:pathtoscript"
Wechseln Sie das Verzeichnis mit dem CD-Befehl

Jetzt, Führen Sie den folgenden Befehl aus um das Skript auszuführen.

Notiz: Wenn Sie die Datei unter einem anderen Namen gespeichert haben, passen Sie den Namen im Befehl entsprechend an.

.change-dns.ps1
Führen Sie das PowerShell-Skript aus

Sobald Sie das Skript ausführen, werden die aktuellen DNS-Adressen aller Netzwerkadapter auf Ihrem Computer angezeigt und Sie werden dann zur Eingabe einer neuen primären DNS-Adresse aufgefordert.

Geben Sie die ein primäre DNS-IP-Adresse (in IPv4) und drücken Sie Eingeben. In meinem Fall möchte ich beispielsweise die Verwendung meines DNS ändern OpenDNS Zu Öffentliches DNS von Google. Also habe ich die öffentliche DNS-Adresse von Google (8.8.8.8) eingegeben.

Geben Sie die primäre DNS-Adresse ein

Geben Sie als Nächstes die ein Sekundäre DNS-IP-Adresse und drücke Eingeben.

Geben Sie die sekundäre DNS-Adresse ein

Das ist es. Sobald Sie die Eingabetaste drücken, ändert das PowerShell-Skript die DNS-Adresse und zeigt den aktualisierten DNS aller Netzwerkadapter auf Ihrem PC an.

Die DNS-Einstellungen wurden geändert und das Skript zeigt aktualisierte DNS-Einstellungen und ihre IP-Adressen an

Wie funktioniert das Skript?

Wenn Sie das Skript ausführen, wird zunächst Folgendes ausgelöst DisplayCurrentDNS Funktion, um Ihre aktuellen DNS-Einstellungen für alle aktiven Netzwerkadapter anzuzeigen. Als Nächstes werden Sie aufgefordert, die primären und sekundären DNS-Adressen einzugeben, die mithilfe von validiert werden Get-ValidIPAddress Funktion und werden in der gespeichert $primaryDNS Und $secondaryDNS Variablen. Dann verwendet das Skript das Set-DnsClientServerAddress Cmdlet, um die Änderungen anzuwenden. Es wird dann sofort ausgeführt DisplayCurrentDNS erneut, um die geänderten DNS-Einstellungen anzuzeigen.

Microsoft-Dokumentation zur Verwendung des Cmdlets „Set-DnsClientServerAddress“..

Einschränkungen

Das Skript ändert nur die DNS-Adresse für aktive Netzwerkadapter. Das heißt, wenn ein Netzwerkadapter deaktiviert ist, werden seine DNS-Einstellungen nicht geändert.

Darüber hinaus wird nicht überprüft, ob das DNS funktioniert oder nicht.

Zusammenfassung – Ein einfaches PS-Skript zur besseren Verwaltung der DNS-Einstellungen

Im Vergleich zur Verwendung der Einstellungs-App macht die Verwendung meines PowerShell-Skripts das Ändern und Aktualisieren von DNS-Einstellungen zu einem Kinderspiel, da die Notwendigkeit, sich mit einer umständlichen Benutzeroberfläche herumzuschlagen, entfällt. Dies gilt insbesondere, wenn Sie häufig DNS wechseln, Netzwerkkonfigurationen testen und mehrere Computer verwalten.

Wenn Sie Fragen haben, kommentieren Sie unten und ich werde antworten.

Advertisement