So konfigurieren Sie Netzwerkeinstellungen unter Windows mit PowerShell: Festlegen von IP-Adresse, DNS, Standardgateway und statischen Routen

Die Verwaltung von Netzwerkeinstellungen über PowerShell ist längst nicht mehr nur etwas für erfahrene Systemadministratoren; sie ist geradezu unerlässlich, insbesondere bei der Verwaltung mehrerer Rechner oder der Automatisierung von Prozessen. Ich habe mir schon oft den Kopf zerbrochen, als ich versucht habe, IP-Adressen zu ändern oder zwischen statischer IP-Adresse und DHCP auf einigen Windows-Rechnern umzuschalten, und ehrlich gesagt, mit PowerShell-Cmdlets geht das Ganze viel einfacher. Und wenn die grafische Benutzeroberfläche mal nicht richtig funktioniert oder versteckte Netzwerkadapter für Verwirrung sorgen, helfen diese Befehle, alles wieder in den Griff zu bekommen. Beachten Sie jedoch, dass Sie bei manchen Konfigurationen, insbesondere bei Hyper-V- oder VPN-Adaptern, möglicherweise zusätzliche Parameter hinzufügen oder PowerShell als Administrator ausführen müssen. Rechnen Sie damit, dass Ihnen während der Ausführung IP-Adressen, Netzwerkkartennamen oder Schnittstellen angezeigt werden. Zugegeben, die Bedienung ist nicht immer intuitiv – Windows kann bei Netzwerkkonfigurationen manchmal etwas eigenwillig sein –, aber sobald Sie die richtigen Befehle beherrschen, läuft alles reibungslos.

So beheben Sie Probleme mit den Netzwerkadaptereinstellungen in Windows mithilfe von PowerShell

Verwalten von Netzwerkadaptereinstellungen über PowerShell

Der erste Schritt besteht darin, alle Netzwerkadapter aufzulisten. Führen Sie Folgendes aus:

Get-NetAdapter

Hier werden Name, Status (z. B.„Verfügbar“ oder „Inaktiv“), MAC-Adresse und Geschwindigkeit angezeigt. Ich habe Fälle erlebt, in denen versteckte oder virtuelle Adapter Probleme verursacht haben. Um alle möglichen Adapter zu erfassen, können Sie folgenden Befehl ausführen:

Get-NetAdapter –IncludeHidden

Hier werden alle Verbindungen angezeigt, sogar die, die Windows normalerweise ausblendet. Das ist hilfreich, wenn VPNs oder virtuelle Switches Probleme verursachen. Sobald der Name der Schnittstelle angezeigt wird, die Sie anpassen möchten, z. B.„Ethernet0“ oder „Wi-Fi“, können Sie sie aktivieren oder deaktivieren.

Enable-NetAdapter -Name Ethernet0 Disable-NetAdapter -Name Ethernet0

Manchmal müssen Adapter zur besseren Verständlichkeit umbenannt werden:

Rename-NetAdapter -Name Ethernet0 -NewName LAN

Und wenn Sie VPN- oder VLAN-Probleme beheben, schauen Sie sich die VLAN-ID an:

Get-NetAdapter | ft Name, Status, Linkspeed, VlanID

Aktuelle IP-Einstellungen abrufen – damit Sie wissen, was los ist

Falls Ihre WLAN- oder Kabelverbindungen instabil sind und Sie sich fragen, welche Verbindungen wo zugewiesen sind, liefert Ihnen dieser Befehl die wichtigsten Informationen:

Get-NetIPConfiguration -InterfaceAlias Ethernet0

Für detailliertere Informationen wie DHCP-Status, Standardgateway und tatsächlich zugewiesene IP-Adressen:

Get-NetIPConfiguration -InterfaceAlias Ethernet0 -Detailed

Das Kopieren und Einfügen der IP-Adresse ist üblich, insbesondere bei der Konfiguration statischer IP-Adressen. So sehen Sie nur die IPv4-Adresse:

(Get-NetAdapter -Name Ethernet0 | Get-NetIPAddress).IPv4Address

Feste IP-Adresse einrichten – weil DHCP manchmal einfach Mist ist

Um Ihrem Netzwerkadapter eine statische IP-Adresse und ein Standardgateway zuzuweisen, führen Sie beispielsweise folgenden Befehl aus:

Get-NetAdapter -Name Ethernet0 | New-NetIPAddress -IPAddress 192.168.2.50 -DefaultGateway 192.168.2.1 -PrefixLength 24

Oder, verständlicher ausgedrückt, definieren Sie eine Reihe von Parametern und übergeben Sie diese alle auf einmal:

$ipParams = @{ InterfaceIndex = 8; IPAddress = "192.168.2.50"; PrefixLength = 24; AddressFamily = "IPv4" } New-NetIPAddress @ipParams

Möchten Sie eine sekundäre IP-Adresse hinzufügen? Führen Sie einfach Folgendes aus:

Set-NetIPAddress -InterfaceAlias Ethernet0 -IPAddress 192.168.2.90

Wenn Sie DHCP nicht mehr verwenden und Ihre IP-Adresse manuell festlegen möchten:

Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Disabled

Und falls erforderlich, entfernen Sie die statische IP-Adresse (z. B.wenn Sie wieder auf DHCP umstellen):

Remove-NetIPAddress -IPAddress "192.168.2.50"

Ändern der DNS-Servereinstellungen – Da die Standardeinstellungen langsam oder falsch sein können.

Um bestimmte DNS-Server anzugeben, führen Sie Folgendes aus:

Set-DNSClientServerAddress –InterfaceIndex 8 –ServerAddresses 8.8.8.8, 8.8.4.4

Hiermit werden beispielsweise die DNS-Server von Google konfiguriert. Um dies flexibler zu gestalten:

$dnsParams = @{ InterfaceIndex = 8; ServerAddresses = ("8.8.8.8", "8.8.4.4") } Set-DnsClientServerAddress @dnsParams

Und wenn Sie alle DNS-Einstellungen löschen und zur automatischen DNS-Nutzung über DHCP zurückkehren möchten, gehen Sie einfach wie folgt vor:

Set-DnsClientServerAddress –InterfaceIndex 8 –ResetServerAddresses

Vergessen Sie nicht, den DNS-Cache nach Änderungen zu leeren, insbesondere wenn Sie eine Fehlerbehebung durchführen:

Clear-DnsClientCache

Umgang mit Routingtabellen – Sicherstellen, dass der Datenverkehr seinen Weg findet

Möchten Sie Ihre aktuellen Routen einsehen? Nutzen Sie:

Get-NetRoute

Genauer gesagt, sieht die Standardroute (die „letzte Option“) folgendermaßen aus:

Get-NetAdapter -Physical | ? {$_. Status -eq "Up"} | Get-NetRoute | where DestinationPrefix -eq "0.0.0.0/0"

Sie möchten eine neue Route hinzufügen, beispielsweise für ein VPN oder ein spezielles Netzwerk? Führen Sie Folgendes aus:

New-NetRoute -DestinationPrefix "0.0.0.0/0" -NextHop 192.168.2.2 -InterfaceIndex 8

Möchten Sie eine Route entfernen? Führen Sie einfach Folgendes aus:

Remove-NetRoute -NextHop 192.168.0.1 -Confirm:$False

Zurück zu DHCP – denn manchmal ist statisches Netzwerk zu statisch.

Falls Ihre Konfiguration unübersichtlich ist oder Sie einfach möchten, dass Windows wieder automatisch eine IP-Adresse bezieht, gehen Sie wie folgt vor:

Set-NetIPInterface -InterfaceAlias Ethernet0 -Dhcp Enabled

Und um die DNS-Einstellungen zu löschen:

Set-DnsClientServerAddress –InterfaceAlias Ethernet0 -ResetServerAddresses

Um wirklich alles wieder online zu bringen und eine neue IP-Adresse vom DHCP-Server zu beziehen:

Restart-NetAdapter -InterfaceAlias Ethernet0

Falls noch ein Standardgateway vorhanden ist, müssen Sie es möglicherweise manuell entfernen mit:

Remove-NetRoute -DestinationPrefix 0.0.0.0/0 -NextHop 192.168.2.1 -Confirm:$False

Im Notfall kann ein vollständiges Zurücksetzen der IPv4-Einstellungen für alle Adapter per Skript erfolgen, was recht praktisch ist:

$adapters = Get-NetAdapter | ? {$_. Status -eq "Up"} $adapters | ForEach-Object { $interface = $_ $iface = $interface | Get-NetIPInterface -AddressFamily IPv4 if ($iface. Dhcp -eq 'Disabled') { $interface | Remove-NetRoute -Confirm:$False $interface | Set-NetIPInterface -Dhcp Enabled Set-DnsClientServerAddress -InterfaceAlias $interface. Name -ResetServerAddresses } }

Fernänderung der Einstellungen auf mehreren Rechnern

Das ist etwas komplexer, aber äußerst nützlich, wenn Sie Konfigurationsänderungen auf mehreren Servern oder Workstations verteilen müssen. Dies lässt sich mithilfe von Skripten realisieren, die WinRM oder PowerShell-Remoting nutzen. Um beispielsweise die DNS-Einstellungen auf allen Windows Server-Computern in einer Active Directory-Organisationseinheit zu aktualisieren, führen Sie folgenden Befehl aus:

$Servers = Get-ADComputer -SearchBase 'OU=Servers, OU=Berlin, OU=DE, DC=woshub, DC=cpm' -Filter '(OperatingSystem -like "Windows Server*")' | Sort-Object Name ForEach ($Server in $Servers) { Invoke-Command -ComputerName $Server. Name -ScriptBlock { $newDns = @('192.168.2.11', '8.8.8.8') $adapters = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object {$_. DHCPEnabled -ne $true} $adapters | ForEach-Object { $_. SetDNSServerSearchOrder($newDns) | Out-Null } } }

Ja, es ist etwas komplex, aber es funktioniert. Stellen Sie lediglich sicher, dass auf Ihren Remote-Rechnern WinRM aktiviert ist und Ihre Administratorrechte korrekt eingerichtet sind. In manchen Fällen müssen Sie möglicherweise die Ausführungsrichtlinien anpassen oder PowerShell als Administrator ausführen, damit alles reibungslos funktioniert.

Im Großen und Ganzen ist das größte Ärgernis, dass Windows manchmal selbst Probleme macht oder Adapter ausblendet, von deren Existenz man gar nichts wusste. Diese Befehle haben geholfen, Klarheit zu gewinnen, und die Einrichtung statischer oder DHCP-IP-Einstellungen wurde deutlich einfacher, sobald man wusste, was man ausführen musste. Denn natürlich muss Windows es einem manchmal unnötig schwer machen, aber mit etwas Geduld sparen einem diese Cmdlets Stunden.