MAC-Adresse, VLAN-ID, WOL, Jumbo-Frames und Protokolle ändern mit PowerShell

    NetzwerkadapterAlternativ zur Konfiguration von Netz­adaptern über die GUI kann PowerShell deren Einstellungen auslesen und ändern. Dafür bedarf es allerdings mehrerer Cmdlets, darunter Get-NetAdapter, Get-NetAdapter­Binding, Get-NetAdapter­Power­Mana­ge­ment oder Get-NetAdapter­Advanced­Property 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.

    Get-NetAdapterAdvancedProperty zeigt die erweiterten Einstellungen von Adaptern an.

    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-NetAdapter­PowerManagement 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-NetAdapter­AdvancedProperty 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" -Display­Value "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-NetAdapter­Power­Management. 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.

    1 Kommentar

    Bild von marc
    marc sagt:
    23. November 2015 - 10:27

    leider nicht in Win7 verfügbar