Mobile-Menu

IP-Adressen, Netzwerkadapter und Konfigurationsdaten ermitteln Aufgaben im Netzwerk mit der PowerShell durchführen

Von Thomas Joos

Anbieter zum Thema

Mit der PowerShell lassen sich umfassende Konfigurationen für Windows im Netzwerk vornehmen. Aufgaben lassen sich mit der Shell oft schneller und effektiver umsetzen als in der grafischen Oberfläche. Wir zeigen verschiedene Möglichkeiten.

Mit der PowerShell lassen sich über WMI viele Informationen bspw. zu Netzwerkadaptern abrufen.
Mit der PowerShell lassen sich über WMI viele Informationen bspw. zu Netzwerkadaptern abrufen.
(Bild: Microsoft / Joos)

Wir haben uns in den Beiträgen „Mit der PowerShell nach offenen Ports suchen“ und „Netzwerkeinstellungen mit der PowerShell steuern“ bereits mit dem Thema Netzwerkaufgaben und PowerShell auseinandergesetzt.

In diesem Beitrag vertiefen wir die Möglichkeiten nochmal etwas und zeigen weitere Befehle, mit denen sich auf Arbeitsstationen mit Windows 10/11 und Servern mit Windows Server 2016/2019 sowie Windows Server 2022 mit der PowerShell verschiedene Netzwerkaufgaben durchführen lassen – auch unter Verwendung von Windows Management Instrumentation (WMI). Die Aufgaben können in der klassischen, vorinstallierten PowerShell durchgeführt werden, aber auch mit der modernen PowerShell 7.x, die parallel zur alten PowerShell in Windows installiert werden kann.

Bildergalerie
Bildergalerie mit 7 Bildern

Funktionieren Abfragen per WMI nicht, kann es hilfreich sein, diese Funktion in Windows zunächst mit „winrm quickconfig“ zu aktivieren. Ob Verbindungen mit WMI über das Netzwerk funktionieren, kann dann mit dem Befehl „winrm enumerate winrm/config/listener“ überprüft werden. Dazu muss der Port 5985 geöffnet sein.

Informationen zum BIOS/UEFI mit der PowerShell abfragen

Wir zeigen in diesem Beitrag auch verschiedene Cmdlets, die WMI nutzen. Sinnvoll kann das zum Beispiel sein, wenn mehr über den PC-Hersteller und die Hauptplatine angezeigt werden soll. In diesem Fall kann der folgende Befehl zum Einsatz kommen:

Get-CimInstance -ClassName Win32_BIOS

Der Befehl unterstützt den Parameter „-ComputerName“, sodass auch eine Abfrage über das Netzwerk erfolgen kann. Wird die Abfrage wegen fehlenden Berechtigungen verweigert, ist es möglich, die Anmeldung in einer Variablen zu speichern und diese zur Verbindung zu nutzen:

$CimSession = New-CimSession -ComputerName dc01 -Credential (Get-Credential)Get-CimInstance -CimSession $CimSession -ClassName Win32_BIOS

Die gleichen Informationen liefert der Befehl „Get-WmiObject Win32_BIOS“. Dieses Cmdlet ist wiederum hilfreich, um auch Daten zur Netzwerkkonfiguration auszulesen, die sich flexibel anpassen lassen, zum Beispiel:

Get-WmiObject Win32_NetworkAdapterConfiguration | where {$_.IPEnabled –eq $true} | FL Description, MACAddress,IPAddress,IPSubnet,DefaultIPGateway,DNSServerSearchOrder

Mehr Informationen zu allen Adaptern zeigt der folgende Befehl:

Get-NetIPConfiguration -Detailed -All

Für die Anzeige aller Mac-Adressen eines Computers kann der folgende Befehl genutzt werden:

Get-WmiObject Win32_NetworkAdapterConfiguration | format-table MacAddress, Description -autosize

Um noch mehr Informationen zu einem Computer auszulesen, die schlussendlich auch für die Netzwerkkonfiguration relevant sind, steht auch das Cmdlet „Get-ComputerInfo“ zur Verfügung. Das Cmdlet unterstützt nicht den Parameter „-ComputerName“ zur Abfrage der Informationen über das Netzwerk, aber mit Umwegen lässt sich das umgehen:

Invoke-Command -ComputerName <Name> -ScriptBlock {Get-ComputerInfo}

Reichen die Berechtigungen nicht aus, kann hier der gleiche Ansatz verfolgt werden, wie bei „Get-CimInstance“ im oberen Abschnitt.

Konfiguration der Netzwerkadapter in der PowerShell auslesen

Die Konfigurationsdaten der Netzwerkadapter können in der PowerShell mit dem folgenden Befehl ausgelesen werden:

Get-CimInstance -Class Win32_NetworkAdapterConfiguration

Der Befehl zeigt zunächst alle Netzwerkadapter auf dem Computer an, ob DHCP aktiviert ist und welche Indexnummer dem Adapter zugewiesen ist. Die Indexnummer ist für die Verwendung von verschiedenen Befehlen notwendig, um den Netzwerkadapter zu identifizieren. Um mehr Informationen anzuzeigen, kann die Ausgabe mit der Pipeline „|“ an das Cmdlet „Select-Object“ weitergegeben werden. Mit dem Parameter „-ExcludeProperty“ lassen sich wiederum einzelne Informationen ausblenden, mit dem Parameter „-Filter“ können Netzwerkadapter angesprochen werden, die aktuell eine IP-Adresse zugewiesen haben und mit dem Netzwerk verbunden sind:

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=$true | Select-Object -ExcludeProperty IPX*,WINS*

Netzwerkkategorie auslesen und ändern

Um Daten der Netzwerkverbindungen und das Netzwerkprofil auszulesen, kann ergänzend das folgende Cmdlet zum Einsatz kommen:

Get-NetConnectionProfile

Das Cmdlet zeigt auch wichtige Informationen zur „NetworkCategory“ an, die schlussendlich steuert, welches Firewall-Profil auf dem Computer aktiv ist. Ändern lässt sich die Kategorie in diesem Fall wiederum zu Beispiel mit:

Set-NetConnectionProfile -InterfaceIndex 10 -NetworkCategory Private

Das Cmdlet ändert den Eintrag der Netzwerkkategorie in der Registry. Dieser ist im Pfad „HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\Current Version\NetworkList\Profiles“ für das jeweilige Profil zu finden. Der Wert „1“ Steht für ein privates Netzwerk, „0“ steht für öffentliche Netzwerke, „2“ steht für das Profil „Domain“.

Physische Netzwerkadapter auslesen und Informationen anzeigen

Soll die Anzeige der Netzwerkadapter auf die physisch aktiven gesetzt werden, kann auch das Cmdlet „Get-NetAdapter“ zum Einsatz kommen, das nicht auf WMI setzt. Der Befehl zeigt für die Adapter auch die Mac-Adresse an und ob der Adapter aktuell mit dem Netzwerk verbunden ist. Dazu kommen Informationen der Geschwindigkeit für den Adapter.

Mit dem Befehl lassen sich einzelne Adapter auch deaktivieren. Hierzu kommt zusätzlich noch das Cmdlet „Disable-NetAdapter“ zum Einsatz sowie das Cmdlet „Enable-NetAdapter“, um den Adapter wieder zu aktivieren:

Get-NetAdapter -Name LAN-Verbindung | Disable-NetAdapter -Confirm:$false

und

Get-NetAdapter -Name LAN-Verbindung | Enable-NetAdapter

Der Status des Adapters ändert sich in diesem Fall und wird jeweils in der Spalte „Status“ angezeigt. Die wichtigsten Informationen lassen sich mit dem folgenden Befehl festlegen:

Get-NetAdapter | FT InterfaceDescription,MacAddress,LinkSpeed,MTUSize,DriverFileName,NdisVersion,Status

Welche Spalten der Befehl anzeigen soll, lässt sich natürlich individuell steuern.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Netzwerktechnik, IP-Kommunikation und UCC

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

DHCP-Daten abfragen und Leases erneuern

Bei Verwendung von DHCP ist es möglich, über WMI auch Informationen zu den DHCP-Leases und den verwendeten DHCP-Server auszulesen:

Get-CimInstance -Class Win32_NetworkAdapterConfiguration -Filter "IPEnabled=$true and DHCPEnabled=$true" | Format-Table -Property DHCP*

Mit WMI lässt sich in der PowerShell aber auch einiges an der Konfiguration in Windows ändern. Um zum Beispiel für alle Netzwerkadapter neue DHCP-Leases abzurufen, kann der folgende Befehl zum Einsatz kommen:

Invoke-CimMethod -ClassName Win32_NetworkAdapterConfiguration -MethodName RenewDHCPLeaseAll

(ID:49025139)