Tags: System-Management, Netzwerk, WLAN
netsh.exe (Network Shell) ist eines der mächtigsten Hilfsprogramme unter Windows. Mit ihm lassen sich alle Aspekte der Windows-Netzwerkkonfiguration per Kommandozeile erledigen, seit Vista/Windows Server 2008 auch die für Drahtlos-Netzwerke (WLAN). netsh.exe kann sich auch mit entfernten Rechnern verbinden und deren Netzwerkeinstellungen komplett remote konfigurieren. Während es unter Windows seitens Microsoft in der Vergangenheit prinzipiell nie so wichtig war, die Konfiguration per Kommandozeile durchführen zu können, kommt dem Tool mit Windows Server Core eine neue Bedeutung zu, da dort die GUI – oft auch für grundlegende Einstellungen – nun einmal fehlt.
netsh.exe als interaktive Shell
Ruft man netsh.exe ohne verknüpftes Kommando auf, landet man in der interaktiven Shell, was man am Prompt „netsh>
“ erkennt. Hat man sich mittels des Parameters -r
mit einem Remote-Computer verbunden, erscheint dessen Namen davor in eckigen Klammern. Verbindungen werden nicht gespeichert; beendet man eine Remote-Sitzung von netsh.exe
, muss man also beim nächsten Mal die Zielmaschine erneut als Parameter eingeben, die Voreinstellung ist immer die Konfiguration des lokalen PCs. Will man dies innerhalb von netsh.exe
ändern, dient dazu der Befehl
set machine ‹Rechnername›
Lässt man hier den Rechnernamen weg, kehrt man wieder zur Konfiguration des lokalen Rechners zurück.
netsh.exe
selbst dient nur als Host-Anwendung für diverse DLLs, die für die eigentliche Netzwerkkonfiguration zuständig sind. Diese werden innerhalb von netsh.exe
jeweils als „Kontext“ bezeichnet, es gibt also jeweils eine DLL und damit einen Kontext etwa für die IP-Konfiguration, für die Firewall-Konfiguration, oder jeweils einen für DHCP- und DNS-Client. In einen solchen Kontext wechselt man, indem man ihn am Prompt eintippt; der Unterschied zu einem normalen Befehl wird jeweils dadurch sichtbar, dass der Prompt den aktuellen Kontext anzeigt. Per
show helper
kann man sich alle anzeigen lassen und welche DLL jeweils dazugehört. Gelingt der Wechsel in einen Kontext nicht, liegt das zumeist daran, dass die entsprechende Komponente nicht installiert ist: So gehört WLAN auf den Client-Betriebssystemen zur Standardausstattung, auf dem Windows Server ist es ein extra zu installierendes Feature.
Rekursiver Aufruf der Hilfe
Durch die Eingabe von „?
“ erfährt man jeweils, welche Befehle – oder Unter-Kontexte – innerhalb eines Kontexts zur Verfügung stehen. Von einem Unterkontext „aufwärts“ wechselt man analog zur Bewegung in einem Verzeichnisbaum mittels des cd-Befehls per „..
“, nötig ist dies jedoch nur, um von dort aus per „?
“ die Namen der verfügbaren Kontexte ausgeben zu lassen. Weiß man diese auswendig, kann man durch Eingabe des Namens jeweils direkt zwischen den Kontexten wechseln.
Etwas anders ist es, wenn man in einem bestimmten Kontext nur ein Kommando absetzen und ihn gleich wieder verlassen will. Dies kann man, indem man Kontext und Kommando mit einem Leerzeichen getrennt direkt hintereinander schreibt. Hier sind nur Kontexte möglich, in die sich direkt unterhalb in der Hierarchie befinden, also nach Eingabe von „?
“ als mögliche Sub-Kontexte in der Liste unter „Befehle in diesem Kontext“ aufgeführt sind.
Eine komplette Übersicht aller Kontexte und der darin möglichen Befehle bietet Microsoft im TechNet. Diese Referenz enthält einige anschauliche Beispiele und ist weitaus hilfreicher als die jeweilige Kurzhilfe per „?
“ alleine.
Aliase für häufige Befehle
Obwohl netsh.exe
nur ein DLL-Host ist, bietet die Shell als solche einige sehr nützliche Funktionen: So können etwa Aliase vergeben werden, etwa um häufig verwendete Befehle abzukürzen. Eine weitere beachtenswerte Funktion ist die, das Programm mit dem gleichnamigen Befehl „offline
“ schalten zu können. Änderungen werden dann nicht mehr unmittelbar appliziert, erst nach einem
commit
oder
online
Mit
show mode
Kann man sich den gegenwärtigen Modus des Programmes anzeigen lassen.
netsh.exe als Kommando
Übergibt man netsh.exe
einen Kontext zusammen mit einem vollständigen Befehl als Parameter, so wechselt es nicht in den Shell-Modus, sondern führt nur den Befehl in dem entsprechenden Kontext aus und beendet sich dann. Alternativ kann man nach dem Parameter -f
ein Script übergeben, um Konfigurationsaufgaben zu automatisieren, die mehrere Zeilen erfordern. Befehle zum Verlassen des Programmes wie etwa exit
oder bye
sind in einem solchen Script nicht erforderlich; das Programm beendet sich nach Abarbeitung des Scripts immer selbst.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
Weitere Links