Samstag, 16. Juni 2018

Mal schnell die IP Adresse umstellen

Man hat ein Gerät (z.B. Router) im Netz mit statischer IP der mal schnell umkonfiguriert werden muss? Wo war jetzt im aktuellen Windows nach dem letzten Update die Adapterkonfiguration hin verschwunden?

Geht auch ganz einfach mit Powershell:
Windows + x Taste drücken und Windows Powershell (Administrator) auswählen.

Hat man nur ein LAN Netzwerkinterface per DHCP am Netzwerk verbunden, erledigt dieses kleine Script die temporäre Umschaltung auf die Adresse 192.168.1.5 (um z.B. einen OpenWrt Router nach dem Start zu konfigurieren) 
$interface = Get-NetIPInterface -AddressFamily IPv4|where {$_.InterfaceAlias -match 'Ethernet' -and $_.Dhcp -eq 'enabled' -and $_.ConnectionState -eq 'Connected'}
$interface | New-NetIPAddress 192.168.1.5 -PrefixLength 24
pause
Set-NetIPInterface -InterfaceIndex $interface.ifIndex -Dhcp enabled
Restart-NetAdapter -name $interface.InterfaceAlias

Erklärung der einzelnen Befehle

Get-NetIPInterface liefert den (die) aktuellen per DHCP konfigurierten und auch verbundenen Netzwerkadapter. Ergänzt man um |select * bekommt man alle Details.
Get-NetIPInterface -AddressFamily IPv4|where {$_.DHCP -eq 'Enabled' -and $_.ConnectionState -eq 'Connected'}

Mit einem Befehl setzt man den Adapter auf eine neue IP Adresse und deaktiviert DHCP
New-NetIPAddress 192.168.1.5 -PrefixLength 24
Er benötig dazu den InterfaceAlias der mit dem vorherigen Befehl angezeigt wurde. Der wird einfach per Dialog abgefragt.

Fertig und alles wieder zurück? Geht mit dem Set Befehl, allerdings wird hier nicht (mehr?) abgefragt, man muss entweder InterfaceAlias  oder InterfaceIndex angeben
Set-NetIPInterface –Dhcp enabled
Bei Geräten mit Alternativer Konfiguration (LAN Adapter sind per default so eingerichtet) wird allerdings diese aktiviert und kein DHCP renew gemacht.

Dafür braucht man ein
Restart-NetAdapter
Hier wird jetzt nach dem Name des Adapters gefragt. Der Inhalt des InterfaceAlias wäre hier adäquat und Wildcard * würde alle Adapter neu starten.

Um jetzt alle Befehle effektiv zu kombinieren kann man die ermittelte Konfig auch zwischenspeichern
$interface = Get-NetIPInterface -AddressFamily IPv4|where DHCP -eq 'Enabled'| where ConnectionState -eq 'Connected'
(Ich habe hier bewusst mal einen alternativen Syntax mit zwei Pipes verwendet)
Man kann die Variable für die Pipeline komplett oder einzelne Elemente daraus verwenden:  $interface.InterfaceAlias liefert den String des "Namens" des Adapters.


Etwas zum lesen:
WindowsPro
Script mit netsh
Technet TCP/IP Cmdlets

Keine Kommentare:

Kommentar veröffentlichen