Tags: Hardware, Netzwerk, PowerShell
Alternativ zur Konfiguration von Netzadaptern über die GUI kann PowerShell deren Einstellungen auslesen und ändern. Dafür bedarf es allerdings mehrerer Cmdlets, darunter Get-NetAdapter, Get-NetAdapterBinding, Get-NetAdapterPowerManagement oder Get-NetAdapterAdvancedProperty sowie ihren Set-Pendants.
Öffnet man in der Systemsteuerung unter Netzwerk und Internet => Netzwerkverbindungen die Eigenschaften eines Adapters, dann erhält man eine Übersicht über alle Protokolle und Clients, die an ihn gebunden sind. Über den Button Konfigurieren gelangt man zu einer Vielzahl weiterer Einstellungen, die man zum Großteil interaktiv anpassen kann.
Adapter und Eigenschaften auflisten mit Get-NetAdapter
Diese Werte kann man in PowerShell ebenfalls auslesen und zum Teil auch ändern. Eine zentrale Rolle spielt dabei das Cmdlet Get-NetAdapter, das die installierten physikalischen sowie virtuellen NICs ermittelt und viele ihrer Attribute anzeigt.
Ruft man das Cmdlet ohne Parameter auf, dann zeigt es alle vorhandenen Adapter inklusive einiger ausgewählter Eigenschaften aus. Die Zahl der tatsächlich verfügbaren Attribute liegt deutlich höher, wie man mit dem Aufruf von
Get-NetAdapter | Get-Member -MemberType Properties
recht einfach herausfinden kann. Darunter finden sich einige Eigenschaften, die man in der Praxis häufiger benötigt, wie beispielsweise die MAC-Adresse, VLAN-ID, MTU-Größe oder Geschwindigkeit. Die entsprechenden Werte ließen sich mit einem solchen Aufruf abfragen:
Get-NetAdapter | select name, MacAddress, VlanID, MtuSize, LinkSpeed
Ein gängiges Anliegen dürfte sein, NICs nach bestimmten Kriterien zu filtern, etwa danach, ob es sich um physikalische Adapter handelt oder ob sie mit dem Netzwerk verbunden sind. Um solche anzuzeigen, die beide Bedingungen erfüllen, kann man folgenden Befehl verwenden:
Get-NetAdapter | where {$_.virtual -eq $false -and $_.status -eq "up"}
Erweiterte Einstellungen mit Get-NetAdapterAdvancedProperty
Der Eigenschaften-Dialog für NICs in der Systemsteuerung zeigt auf der Registerkarte eine lange Liste von Attributen an, die Get-NetAdapter jedoch unterschlägt.
Dafür zuständig ist dagegen Get-NetAdapterAdvancedProperty, dem man die Namen der gewünschten Adapter als Argumente oder als Output von Get-NetAdapter via Pipe übergibt:
Get-NetAdapterAdvancedProperty -Name Ethernet*
Bindungen analysieren
Will man darüber hinaus erfahren, welche Protokolle und Clients an eine NIC gebunden sind, dann benötigt man zusätzlich das Cmdlet Get-NetAdapterBinding. Die Ausgabe von Get-NetAdapter kann man an dieses über eine Pipe durchreichen, um die Informationen für die betreffenden Adapter zu erhalten:
Get-NetAdapter | where {$_.virtual -eq $false -and $_.status -eq "up"} | Get-NetAdapterBinding
Dieses Beispiel zeigt sämtliche Bindungen für alle aktiven physikalischen NICs an. Möchte man das Ergebnis etwa auf bestimmte Protokolle einschränken, dann kann man dies über den Parameter ComponentID tun:
Get-NetAdapter | where status -eq "up" | Get-NetAdapterBinding -ComponentID ms_server
Dieser Befehl würde alle NICs ausgeben, an welche die Datei- und Druckerfreigabe für Microsoft-Netzwerke gebunden ist. Anstatt der kryptischen ComponentID kann man den sprechenden Namen mit Hilfe des Parameters Displayname angeben:
Get-NetAdapter | Get-NetAdapterBinding -DisplayName Internetprotokoll*
In diesem Fall würde das Cmdlet alle Adapter zeigen, an die IP v4 oder v6 gebunden ist.
Wake-on-LAN
Benötigt man zudem Auskunft über die Einstellungen für Wake-on-LAN, dann muss man ein weiteres Cmdlet namens Get-NetAdapterPowerManagement bemühen:
Get-NetAdapterPowerManagement -Name Ether*
Im Gegensatz zu den zuvor genannten erfordert dieses die Ausführung in einer PowerShell mit administrativen Rechten.
Eine ganze Reihe weiterer Cmdlets kann spezifische NIC-Daten auslesen, darunter zum Beispiel Get-NetAdapterHardwareInfo oder Get-NetAdapterStatistics. Weitere Kommandos finden sich in dieser Übersicht auf TechNet.
Adapter-Einstellungen ändern
Wie bereits das Präfix "Get" erwarten lässt, dienen die bisher genannten Cmdlet ausschließlich dazu, Eigenschaften von Adaptern auszulesen. Sie alle haben jedoch Gegenspieler mit der Vorsilbe Set, die dem schreibenden Zugriff dienen. Allerdings ist nicht jedes davon in der Lage, alle zuvor angezeigten Werte zu verändern.
So beschränkt sich etwa Set-NetAdapter mit jeweils eigenen Parametern auf das Setzen der MAC-Adresse, von VLAN-IDs oder der Beschreibung des Adapters. Dagegen kann man mit Set-NetAdapterAdvancedProperty alle Eigenschaften anpassen, die das lesende Pendant anzeigt. Dazu übernimmt man den DisplayName des betreffenden Attributs und gibt den neuen Wert über den Parameter DisplayValue an:
Set-NetAdapterAdvancedProperty -Name "Ethernet 3" -DisplayName "Jumbo-Rahmen" -DisplayValue "6KB MTU"
Protokolle an Adapter binden
Um ein Protokoll oder einen Client an einen Adapter zu binden, bedient man sich des Cmdlets Set-NetAdapterBinding. Hier gibt man den Namen des Protokolls wieder über den Parameter ComponentID oder über den DisplayName an, wobei Letzterer die Verwendung von Wildcards erlaubt:
Set-NetAdapterBinding -Name "Ethernet 3" -DisplayName "*(TCP/IPv4)*" -Enabled $true
Bei einem solchen Aufruf kann man gleich festlegen, ob etwa IPv4 auch gleich aktiviert werden soll. Ist das Protokoll bereits an den Adapter gebunden und muss nur mehr aktiviert oder deaktiviert werden, dann sind dafür die Cmdlets Enable-NetAdapterBinding bzw. Disable-NetAdapterBinding zuständig.
Für die Konfiguration von WOL muss man zu einem weiteren Cmdlet greifen, nämlich Set-NetAdapterPowerManagement. Wie Set-NetAdapter bietet es einen eigenen Parameter für jede Eigenschaft, so etwa für WakeOnMagicPacket:
Set-NetAdapterPowerManagement -Name Ether* -WakeOnMagicPacket Disabled
Alle genannten Cmdlets mit schreibendem Zugriff verlangen eine PowerShell-Session mit administrativen Rechten. Sie lassen sich zudem wie ihre Get-Pendants auch auf Remote-PCs anwenden. Manche Änderungen können das Zurücksetzen des Adapters erfordern, um wirksam zu werden. Dies lässt sich mit Restart-NetAdapter erreichen.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- Offene Ports anzeigen mit PowerShell
- Netzlaufwerk mit PowerShell verbinden
- IP-Adresse und DNS-Server mit PowerShell ändern
- Server remote warten mit IPMI: Netzwerk konfigurieren, Active Directory anbinden, von ISO booten
- ESXi-Treiber für Intel e1000 und Intel I220 / I221 / I225 / I226 Chipsets installieren
Weitere Links
1 Kommentar
leider nicht in Win7 verfügbar