WLAN-Verbindungen in Windows 10 mit PowerShell verwalten


    Tags: ,

    Teaser WLAN / WiFiMöchte man WiFi-Profile auf der Kommando­zeile oder in Scripts bear­beiten, dann bieten die Bord­mittel dafür bloß netsh.exe. Das Community-Modul wifi­profile­management schließt diese Lücke bei Power­Shell mit mehreren Cmdlets, die ein voll­ständiges WLAN-Management er­lauben.

    Windows 10 enthält zwar Cmdlets für das Verwalten von Netzwerkprofilen für LAN-Verbindungen, aber WiFi-Profile lassen sich mit Set-NetConnectionProfile nicht sinnvoll bearbeiten. Diesem Zweck dient das notorisch umständliche Tool netsh.exe, das in einem PowerShell-Script zudem ein Fremd­körper ist.

    Ähnlich wie bei der Verwaltung von NTFS-Berechtigungen schafft hier ein Community-Modul Abhilfe, und zwar wifi­profile­management des Microsoft-Mitarbeiters Jason Walker. Es deckt alle Funktionen vom Anzeigen der verfüg­baren Netzwerke über das Anlegen und Ändern von Profilen bis zum Auslesen von Passwörtern ab.

    WiFi-Modul installieren

    Die Installation von wifi­profile­management erfolgt am einfachsten über PowerShellGet:

    Install-Module -Name wifiprofilemanagement

    Dabei kann es notwendig sein, den NuGet-Provider zu aktualisieren und eine Warnung zu ignorieren, wonach die PSGallery kein vertrauens­würdiges Repository sei.

    Installation des PowerShell-Moduls wifiprofilemanagement über PowerShellGet

    Neues WLAN-Profil erstellen

    Möchte man eine neue Verbindung einrichten, dann wird man sich wie beim Arbeiten auf der GUI erst einmal die verfügbaren Netzwerke anzeigen lassen. Diesem Zweck dient der Aufruf von

    Get-WiFiAvailableNetwork

    Wenn nötig, kann man dem Cmdlet den Namen des WiFi-Adapters über den Parameter WiFiAdapterName mitgeben. Die verfügbaren WLAN-Adapter findet man über

    Get-NetAdapter -Physical | where PhysicalMediaType -eq "Native 802.11"

    Nachdem man sich für das gewünschte Netzwerk entschieden hat, legt man das dafür erforderliche Passwort in einer Variablen als Secure String ab:

    $PW = Read-Host -AsSecureString

    Nun kann man ein Profil für dieses WLAN erzeugen, als Name verwendet man dessen SSID:

    New-WiFiProfile -ProfileName MyWiFi -ConnectionMode manual `
    -Authentication WPA2PSK -Password $PW -Encryption AES

    Neues WiFi-Profil über PopwerShell erzeugen

    Für ConnectionMode kann man zwischen manual und auto wählen, was dem Aus- oder Abwählen der Option Automatisch verbinden auf der GUI entspricht. Die Authentifizierungs­methode muss natürlich jener entsprechen, welche das WLAN zulässt.

    Profile anzeigen, exportieren, Passwort ausgeben

    Anschließend kann man sich mit

    Get-WiFiProfile

    überzeugen, dass das Profil angelegt wurde, und seine Eigenschaften prüfen.

    Dieses Cmdlet bietet zudem die Möglichkeit, das WiFi-Profil als XML-Datei zu exportieren (zum genauen Format der Profile siehe Microsofts Beispiele). Dazu schreibt man die Eigenschaft XML in eine Datei:

    (Get-WiFiProfile -ProfileName MyWiFi).XML | Out-File .\MyWiFi.xml -Encoding utf8

    In diesem Beispiel würde das Profil ohne das Passwort exportiert. Dieses kann man durch den Schalter ClearKey ausgeben:

    Get-WiFiProfile -ProfileName MyWiFi -ClearKey | select Password

    Diesen Parameter müsste man für einen vollständigen XML-Export auch im obigen Aufruf ergänzen. Zu bedenken ist jedoch, dass nur der Benutzer das unver­schlüsselte Passwort zu sehen bekommt, der auch das Profil angelegt hat.

    Das exportierte Profile könnte man auf andere Rechner übertragen und dort mit New-WiFiProfile importieren. Zu diesem Zweck unterstützt das Cmdlet den Parameter XmlProfile. Dazu liest man zuerst die XML-Datei in eine Variable ein, und zwar nicht als XML-Struktur, sondern als einfachen Text:

    $profile = gc -Raw .\MyWiFi.xml

    Nun folgt der Aufruf von

    New-WiFiProfile -XmlProfile $profile

    Mit WLAN verbinden

    Sobald das benötigte Profil erstellt ist, kann man damit eine Verbindung zum betreffenden Netzwerk aufbauen. Diese Aufgabe übernimmt das Cmdlet

    Connect-WiFiProfile -ProfileName MyWiFi

    Als optionale Argumente akzeptiert es den AdapterName, den man wie oben beschrieben ermitteln kann, sowie den ConnectionMode, um die entsprechende Einstellung aus dem Profil zu überschreiben.

    Das Modul sieht kein Cmdlet vor, um eine WLAN-Verbindung wieder zu trennen, so dass man dafür netsh bemühen muss:

    netsh wlan disconnect interface="Wi-Fi"

    Das Interface erhält man auch hier über Get-NetAdapter.

    Profile ändern oder löschen

    Bestehende WiFi-Profile lassen sich mit Set-WiFiProfile anpassen. Es unterstützt die gleichen Parameter wie New-WiFiProfile, so dass man jede Einstellung, die man damit beim Erstellen konfiguriert hat, nachträglich ändern kann.

    Will man etwa das Passwort erneuern, dann würde man so vorgehen:

    Set-WiFiProfile -ProfileName MyWiFi -Password $NeuesPW

    Nach dem gleichen Muster legt man einen neuen Modus für die Authentifizierung oder Verschlüsselung fest.

    Alternativ kann man die vorhandenen Einstellungen mit einer anderen Version des WiFi-Profils komplett überschreiben, wenn diese im XML-Format vorliegt. Auch hier übernimmt der Parameter XmlProfile diese Aufgabe, der Aufruf erfolgt wie bei New-WiFiProfile.

    Vorhandenes WiFi-Profil mit einer gespeicherten XML-Version überschreiben

    Wenn man schließlich ein Netzwerkprofil nicht mehr benötigt, dann kann man es mit Remove-WiFiProfile entfernen. Den Namen des Profils erwartet das Cmdlet über den Parameter ProfileName, optional kann man noch den Adapter über WiFiAdapterName spezifizieren.

    Keine Kommentare