Per cmd mit Wlan verbinden?

2 Antworten

Ich kenne keinen weiteren Befehl. So ein Befehl ist nichts anderes als eine Anwendung. Warum sollte es mehrere Anwendungen für eine Aufgabe geben?

Mit systemeigenen Ressourcen gibt es nix anderes...

Selbst Powershell verwendet netsh.

Wenn man mit netsh umzugehen weiß gibts keinen Grund mit andern Tools herumzufrickeln...

Wenn Dir SSID und Passwort bekannt sind must Du lediglich ein XML-Profil für das Zielnetztwerk generieren und dies mit :

netsh wlan add profile filename="C:\path\WifiNetwork.xml"

...einbinden und verbinden:

Netsh WLAN connect name="Deine SSID"

hier eine Vorlage...das ist der übliche Output von :

netsh wlan export profile %SSIDName% folder=c:\temp

WifiNetwork.template.xml

<?xml version="1.0"?>
<WLANProfile xmlns="http://www.microsoft.com/networking/WLAN/profile/v1">
    <name>SSIDstring_Placeholder_</name>
    <SSIDConfig>
        <SSID>
            <hex>SSIDhex_Placeholder_</hex>
            <name>SSIDstring_Placeholder_</name>
        </SSID>
    </SSIDConfig>
    <connectionType>ESS</connectionType>
    <connectionMode>auto</connectionMode>
    <MSM>
        <security>
            <authEncryption>
                <authentication>WPA2PSK</authentication>
                <encryption>AES</encryption>
                <useOneX>false</useOneX>
            </authEncryption>
            <sharedKey>
                <keyType>passPhrase</keyType>
                <protected>false</protected>
                <keyMaterial>Password_Placeholder_</keyMaterial>
            </sharedKey>
        </security>
    </MSM>
    <MacRandomization xmlns="http://www.microsoft.com/networking/WLAN/profile/v3">
        <enableRandomization>false</enableRandomization>
    </MacRandomization>
</WLANProfile>

...die Platzhalter müssen durch Deine Daten ersetzt werden.

Da sich viele mit der Hexcodierung der SSID schwertun habe ich ein kleine Batchscript geschrieben, welches auch gleich alle anderen Platzhalter ersetzt.

Mit ca. 20 Zeilen effektivem Code ein Winzling, den man so bestenfalls in Powershell unterbieten könnte. Der Rest sind Kommentare und Anzeigeschnickschnack .

Create-WLanprofile.cmd

@echo off
chcp 65001 >nul

echo +++ Erzeuge XML-WLAN-Profildatei +++
set "stringFile=%temp%\%~n0.ssid.tmp"
set "hexFileFile=%temp%\%~n0.ssid.hex"
set "templateXML=%~dp0WifiNetwork.template.xml"

  rem Hier DefaultSSID und Passwort eintragen (Diese werden engesetzt, wenn Nichts eingegeben wird)
set "SSIDstr=Meine Default SSID"
set "PassWord=Mein Default Passwort"

set /p "SSIDstr=Gib die SSID ein :"
set /p "PassWord=Gib das Passwort ein :"
  rem Name  für Zieldatei
set "profileXML=%~dp0WifiNetwork.%SSIDstr%".xml"

  rem schreibe die SSID ohne Zeilenvorschub und Quotes in Datei
<nul >"%stringFile%" set /p "=%SSIDstr%"
  rem Erzeuge Hexcode für die SSID
for /f "tokens=*" %%a in ('certutil -encodehex -f  "%stringFile%" "%hexFileFile%" 12 ^>nul^&type "%hexFileFile%"') do (set "SSIDhex=%%a")
 rem wandle Kleinbuchstaben in Großbuchstaben
for %%l in (A B C D E F) do call set "SSIDhex=%%SSIDhex:%%l=%%l%%"
  rem Anzeigen
set "SSID"
echo:
   rem ersetze die Platzhalter
(for /f "usebackq tokens=* delims=" %%a in ("%templateXML%") do (
      rem wenn kein Platzhalter in der aktuellen Zeile, schreibe diese wie sie ist
    echo "%%a"|find /v "_Placeholder_">nul &&(echo %%a
      rem ansonsten  ersetzen
    )||( call :replacePlaceholders "%%a")
  rem Geschriebenes in in Zieldatei umleiten
))>"%profileXML%"

  rem Zieldatei anzeigen
echo:
type "%profileXML%"
echo:
echo fertig...
echo Eingebunden wird das Kommando mit:
echo    netsh wlan add profile filename="%profileXML%"
echo Verbunden  wird mit:
echo    Netsh WLAN connect name="%SSIDstr%"
pause
exit
:replacePlaceholders
      rem die einzelnen Platzhalter behandeln
    echo %1|find "SSIDstring_Placeholder_">nul&&(set "replace=SSIDstring_Placeholder_=%SSIDstr%" & goto :doeIt)
    echo %1|find "SSIDhex_Placeholder_"   >nul&&(set "replace=SSIDhex_Placeholder_=%SSIDhex%"    & goto :doeIt)
    echo %1|find "Password_Placeholder_"  >nul&&(set "replace=Password_Placeholder_=%PassWord%"  & goto :doeIt)
:doeIt
      rem schreibe den Ersatz
    for /f "tokens=* delims=" %%a in ('set "line=%~1"^&call echo "%%line:%replace%%%"') do (echo %%~a)
exit /b

wenn du magst kannst Du die beiden Defaultwerte für SSID und Passwort anpassen. Mehr ist jedoch nicht nötig.

Das Script prüft nicht auf unzulässige Zeichen in der Eingabe... der Nutzer ist für die Zulässigkeit selbst verantwortlich.

Wenn Du die XMLdatei im Standard-XML-Viewer öffnest und es wir nichts angezeigt, ist dies ein Indiz für unzulässige Zeichen ,welche eingegeben wurden.

das ist auch der Grund weshalb ich die Profil-XML-Datei nicht automatisch vom Script einbinden und verbinden lasse.

Verbindungsprofil löschen:

Netsh WLAN delete profile "SSID"

Profile anzeigen

netsh wlan show profiles

Info zum Profil...

netsh wlan show profile name="Dein Profil"  key=clear
Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren
DerMechanikerXX  22.04.2022, 15:21

Bei

netsh wlan add profile filename="C:\path\WifiNetwork.xml"

Wie meintest du das wo muss man den die ssid hinschreiben um das Profil zu exportieren?

0
Erzesel  22.04.2022, 18:11
@DerMechanikerXX

bei der Zeile , welche Du aufgeführt hast ist für das händische hinzufügen eines exportierten Profils zuständig.

Alles was darüber zu sagen ist wurde oben bereits erklärt.

Die Einstellungen zu deinem WLan beinhalten eine perfekte Oberfläche um ein Profil zu erstellen und hinzuzufügen:

Die von mir beschriebene Methode ist lediglich die Konzeption für das erstellen eines Profils ohne besagte Oberfläche und das automatisierte Einbinden derartiger Profile.

WifiNetwork.template.xml und Create-WLanprofile.cmd müssen sich in einem gemeinsamen Ordner befinden!

Nach dem Start werden SSID und Passwort des anzulegenden Profils abgefragt. Das neue xmlProfil wird erzeugt und zur Kontrolle angezeigt.

am Ende der Batch gibt es eine kleine Hilfe zum Einbinden des erzeugten Profils. Die zu verwendenden Kommandos werden angezeigt und können kopiert werden/abgetippt werden.

Es hat seinen Grund, weshalb ich das nicht auch noch automatisiert habe:

Sowas tut man nur wenn man auf dem eigenen Rechner unterwegs ist... und der Nutzer sollte wenigstens soviel Kenntnisse haben um das Entsprechende selbst zu machen.,

0