Tags: WLAN, PowerShell
Möchte man WiFi-Profile auf der Kommandozeile oder in Scripts bearbeiten, dann bieten die Bordmittel dafür bloß netsh.exe. Das Community-Modul wifiprofilemanagement schließt diese Lücke bei PowerShell mit mehreren Cmdlets, die ein vollständiges WLAN-Management erlauben.
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 Fremdkörper ist.
Ähnlich wie bei der Verwaltung von NTFS-Berechtigungen schafft hier ein Community-Modul Abhilfe, und zwar wifiprofilemanagement des Microsoft-Mitarbeiters Jason Walker. Es deckt alle Funktionen vom Anzeigen der verfügbaren Netzwerke über das Anlegen und Ändern von Profilen bis zum Auslesen von Passwörtern ab.
WiFi-Modul installieren
Die Installation von wifiprofilemanagement 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 vertrauenswürdiges Repository sei.
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
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 Authentifizierungsmethode 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 unverschlü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.
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.
Täglich Know-how für IT-Pros mit unserem Newsletter
Ähnliche Beiträge
Weitere Links