Wie starte ich einen Befehl zum Verbinden / Trennen des Netzwerks?

59

Ich habe eine WLAN-Verbindung, die eine Authentifizierung über ein Webformular erfordert, sobald die drahtlose Verbindung hergestellt wurde. Ich kann die Authentifizierung mit einem Skript automatisieren, das curl/ curlIE verwendet .

Aber wie kann ich Windows auffordern, mein Skript jedes Mal aufzurufen, wenn ich eine Verbindung zu einer bestimmten Netzwerkverbindung herstelle?

Ich wäre auch daran interessiert, den Namen des WLAN-Profils oder der ESSID in der Befehlszeile meines Skripts zu erhalten.

Dolmen
quelle
1
Wahrscheinlich nutzlos, aber ich habe das durch googeln herausgefunden. Es listet anscheinend Ihre Verbindungen auf und bietet möglicherweise etwas, das Sie mit einem Skript abfragen können, um festzustellen, wann ein Adapter eine Verbindung herstellt oder trennt. msdn.microsoft.com/en-us/library/ms739931%28v=VS.85%29.aspx
CreeDorofl
Ich möchte nicht alle paar Sekunden den Zustand überprüfen müssen. Benachrichtigungen zur Netzwerkstandorterkennung sind interessant, aber ich sehe keine einfache Möglichkeit, sie nur mit Skripten zu verwenden.
Dolmen
Dolmen - Gibt es eine Möglichkeit, das Skript, das Sie für die Authentifizierung geschrieben haben, zu veröffentlichen? Diese Frage wäre damit viel vollständiger.
quest49
@ quest49 Ich verstehe, dass mein Skript Sie vielleicht interessiert, aber es ist für die Frage irrelevant.
Dolmen
Haben Sie jemals eine Antwort bekommen, die Ihre Frage erfüllt?
Menasheh

Antworten:

80

In Windows Vista und höher können Sie dies mithilfe einer geplanten Aufgabe mit einem Ereignisprotokoll-Trigger ausführen. Das erste Ereignis wird ausgelöst, wenn eine Verbindung zum Netzwerk hergestellt wird, und Sie geben an, mit welchem ​​Netzwerk Sie verbunden sein müssen, damit es ausgeführt werden kann. Das zweite Ereignis wird ausgelöst, wenn die Verbindung zu einem Netzwerk getrennt wird. Jedes Ereignis führt eine bestimmte Aufgabe aus, die Sie angeben. wahrscheinlich die Skripte, die Sie erwähnt haben geschrieben.

Festlegen eines Ereignisses beim Herstellen einer Verbindung zum Netzwerk:

  1. Öffnen Sie den Taskplaner. Sie finden es, indem Sie es Task Schedulerin das Suchfeld des Startmenüs oder unter eingeben Programs | Accessories | System Tools.
  2. Erstellen Sie Create Taskin der Taskplaner- Bibliothek eine neue Aufgabe, indem Sie auf der rechten Seite im Bedienfeld Aktionen auf klicken .

    Aufgabe hinzufügen

  3. Geben Sie der Aufgabe einen Namen wie "Netzwerkverbindung erkennen" oder was auch immer Sie wählen

  4. TriggersKlicken Sie auf der Registerkarte auf New...und wählen Sie On an Eventaus dem Dropdown-Feld.

    Dropdown-Auslöser

  5. Wählen Sie die folgenden Einstellungen:

    • Log: Microsoft-Windows-NetworkProfile/Operational
    • Quelle: NetworkProfile
    • Ereignis-ID: 10000
  6. Klicken Sie auf OK und wechseln Sie zur ConditionsRegisterkarte.
  7. Aktivieren Sie das Kontrollkästchen für Start only if the following network connection is availableund wählen Sie das Netzwerk aus, mit dem Sie das Skript ausführen möchten
  8. ActionsKlicken Sie unter der Registerkarte auf New...und wählen Sie Start a program. Geben Sie den Speicherort der Skriptdatei ein, die Sie ausführen möchten, und klicken Sie dann auf OK.
  9. Legen Sie alle anderen gewünschten Aufgabeneinstellungen fest und klicken Sie dann auf OK.

Festlegen eines Ereignisses beim Trennen der Verbindung zum Netzwerk:

  1. Befolgen Sie die obigen Schritte 2 bis 4
  2. Verwenden Sie die folgenden Ereignisauslösereinstellungen:
    • Log: Microsoft-Windows-NetworkProfile/Operational
    • Quelle: NetworkProfile
    • Ereignis-ID: 10001
  3. Überspringen Sie die Schritte 6 bis 7, da Sie nicht mehr mit einem Netzwerk verbunden sind. Dieses Ereignis wird daher jedes Mal ausgeführt, wenn Sie die Verbindung zu einem Netzwerk trennen .
  4. Führen Sie die Schritte 8 bis 9 erneut aus
nhinkle
quelle
1
Toll! Vielen Dank für die detaillierte Antwort! Das ist viel mehr als ich erwartet hatte. Ich habe herausgefunden, dass ich sogar eine Bedingung für den Netzwerkverbindungsnamen verwenden kann, sodass ich den Befehl nur für ein bestimmtes WLAN-Profil ausführen kann.
Dolmen
Woher haben Sie die Werte, die Sie in Schritt 5 angegeben haben? Es ist möglich, sie durch Ausprobieren im Ereignisprotokoll zu ermitteln, aber ich frage mich, ob es eine bessere Möglichkeit gibt, ein bestimmtes Ereignis zu identifizieren, beispielsweise durch Dokumentation.
Adam Millerchip
1
@AdamMillerchip Ich habe gerade die Ereignisanzeige geöffnet, die Verbindung getrennt / wieder hergestellt und mich dann umgesehen.
Nhinkle
1
Seltsam, ich habe es versucht und nichts ....
Menelaos Bakopoulos
1
Für die Aufzeichnung musste ich als "Quelle" Microsoft-Windows-NetworkProfile(W10 1709)
angeben
11

Es scheint, dass Start only if the following network connection is availablenach Windows 10 Jubiläums-Update kaputt ist. Verwenden Sie stattdessen diesen benutzerdefinierten Auslöser:

<QueryList>
  <Query Id="0" Path="System">
    <Select Path="Microsoft-Windows-NetworkProfile/Operational">
     *[System[(EventID=10000)]] and *[EventData[(Data[@Name="Name"]="YOUR-SSID-HERE")]]
    </Select>
  </Query>
</QueryList>

Verwenden Sie in Unternehmensnetzwerken den Namen der Domäne anstelle der SSID. In diesem Fall lautet die Kategorie des Ereignisses "Domain Authenticated" und nicht "Private".

krrr
quelle
Start only if the following network connection is availablescheint in der Tat gebrochen. Wenn ich diese Option und führen Sie die Aufgabe auf Anfrage bekomme ich diesen Fehler: Task Scheduler Service is not available. Task scheduler will attempt to reconnect to it.
Federico Destefanis
4

Wenn Sie zufällig ein Thinkpad verwenden, können Sie ThinkVantage Access Connection für Windows 7, Vista und XP nutzen.

ThinkVantage Access Connection ist die mit ThinkPad gelieferte Netzwerkverbindungs-Manager-Software. Wenn nicht, können Sie sie von der Support-Website herunterladen. Wenn Sie ein neues Profil für Ihren Standort erstellen, werden Sie von einem Assistenten gefragt, ob Sie eine Programmliste konfigurieren möchten, die gestartet werden soll, wenn dieser Standort verbunden ist. Es bietet sich an, das Programm auch zu beenden, wenn das Netz nicht verfügbar ist.

Beachten Sie, dass die Software so konfiguriert werden kann, dass sie ohne Standortprofil funktioniert. Dies ist möglicherweise der ursprüngliche Status. In diesem Fall können Sie keine Programmliste konfigurieren, die beim Herstellen einer Verbindung zum WLAN gestartet werden soll Profil, um die Liste zu enthalten.

Aus eigener Erfahrung versuche ich, die Verwendung der Software zu vermeiden - das Herstellen einer Verbindung dauert viel länger als ohne sie. Manchmal kann beim Booten keine neue Verbindung hergestellt werden (dies kann durch manuelles Wiederherstellen der Verbindung behoben werden).

Die Software funktioniert nur mit dem WIFI-Treiber, der mit dem Thinkpad geliefert wird.

Nebenbei bemerkt, diese Software bietet die Möglichkeit, eine Verbindung herzustellen, bevor sich der Benutzer anmeldet, als Option, wenn Sie das Profil erstellen. Ich weiß nicht, ob das ohne geht.

Tankman 六四
quelle