Wie starte ich einen Befehl für die Netzwerkverbindung / Trennung?

56051
dolmen

Ich habe eine WLAN-Verbindung, die eine Authentifizierung mit einem Webformular erfordert, sobald die drahtlose Verbindung hergestellt ist. 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 mich mit einer bestimmten Netzwerkverbindung verbinde?

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

55
Wahrscheinlich nutzlos, aber ich fand das durch Googeln. Es listet anscheinend Ihre Verbindungen auf und bietet möglicherweise etwas, das Sie mit einem Skript abfragen können, um zu bestimmen, wann ein Adapter eine Verbindung herstellt oder trennt. http://msdn.microsoft.com/en-us/library/ms739931%28v=VS.85%29.aspx CreeDorofl vor 13 Jahren 1
Ich möchte den Zustand nicht alle paar Sekunden überprüfen. [Network Location Awareness-Benachrichtigungen] (http://msdn.microsoft.com/de-de/library/ms739957%28v=VS.85%29.aspx) ist interessant, aber ich sehe keine einfache Möglichkeit, sie nur mit Skripts zu verwenden . dolmen vor 13 Jahren 0
Dolmen - Gibt es eine Möglichkeit, das Skript, das Sie für die Authentifizierung geschrieben haben, zu veröffentlichen? Diese Frage wäre viel vollständiger. quest49 vor 12 Jahren 0
@ quest49 Ich verstehe, dass mein Skript dich vielleicht interessieren könnte, aber es ist für die Frage irrelevant. dolmen vor 12 Jahren 0
Haben Sie jemals eine Antwort darauf erhalten, die Ihre Frage zufriedenstellte? Menasheh vor 8 Jahren 0

3 Antworten auf die Frage

74
nhinkle

In Windows Vista und höher können Sie dies mit einem geplanten Task mit einem Ereignisprotokollauslöser tun. Das erste Ereignis wird durch Verbindung mit dem Netzwerk ausgelöst. 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. Für jedes Ereignis wird eine bestimmte Aufgabe ausgeführt, die Sie angeben. wahrscheinlich die Skripte, die Sie erwähnt haben, geschrieben.

Festlegen eines Ereignisses für die Verbindung zum Netzwerk:

  1. Öffnen Sie den Taskplaner. Sie finden es, indem Sie Task Schedulerin das Startmenü-Suchfeld 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 klicken .

    add task

  3. Geben Sie der Aufgabe einen Namen wie "Netzwerkverbindung erkennen" oder wie Sie möchten

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

    dropdown trigger

  5. Wählen Sie die folgenden Einstellungen:

    • Log: Microsoft-Windows-NetworkProfile/Operational
    • Quelle: NetworkProfile
    • Event ID: 10000
  6. Klicken Sie auf OK und wechseln Sie zur ConditionsRegisterkarte.
  7. Aktivieren Sie das Kontrollkästchen 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 Ort der Skriptdatei ein, die Sie ausführen möchten, und klicken Sie dann auf OK.
  9. Legen Sie andere Aufgabeneinstellungen fest und klicken Sie auf OK.

Festlegen eines Ereignisses, wenn Sie die Verbindung zum Netzwerk trennen:

  1. Folgen Sie den obigen Schritten 2-4
  2. Verwenden Sie die folgenden Ereignisauslösereinstellungen:
    • Log: Microsoft-Windows-NetworkProfile/Operational
    • Quelle: NetworkProfile
    • Event ID: 10001
  3. Überspringen Sie die Schritte 6-7, da Sie an kein Netzwerk mehr angeschlossen werden. Dieses Ereignis wird daher jedes Mal ausgeführt, wenn Sie die Verbindung zu einem Netzwerk trennen .
  4. Führen Sie die Schritte 8-9 erneut aus
Großartig! Vielen Dank für diese detaillierte Antwort! Das ist viel mehr als ich erwartet hatte. Ich habe herausgefunden, dass ich sogar eine Bedingung für den Namen der Netzwerkverbindung verwenden kann, sodass ich den Befehl nur für ein bestimmtes WLAN-Profil ausführen kann. dolmen vor 13 Jahren 1
Woher haben Sie die Werte erhalten, die Sie in Schritt 5 angegeben haben? Es ist möglich, sie über Versuch und Irrtum im Ereignisprotokoll auszuarbeiten. Ich frage mich jedoch, ob es eine bessere Möglichkeit gibt, ein bestimmtes Ereignis zu identifizieren, beispielsweise anhand einer Dokumentation. Adam Millerchip vor 11 Jahren 0
@AdamMillerchip Ich habe gerade die Ereignisanzeige geöffnet, getrennt / wieder verbunden und dann umgesehen. nhinkle vor 11 Jahren 1
Ja, es sieht so aus, als müsste es getan werden. Vielen Dank. :-) Adam Millerchip vor 11 Jahren 0
Welche Parameter erhält mein Skript? Können Sie ein Beispiel für ein solches Skript geben, das beispielsweise eine Meldungsbox mit seinen Parametern anzeigt? Oder hängt sie an eine Datei an? einpoklum vor 11 Jahren 0
Seltsam, ich habe es versucht und nichts .... Menelaos Bakopoulos vor 10 Jahren 0
@ maythesource.com was hast du eigentlich ausprobiert? nhinkle vor 10 Jahren 0
@ nhinkle ♦ Versuchte das: http://superuser.com/questions/705305/cannot-launch-application-on-wifi-connection. Danke, KR! Menelaos Bakopoulos vor 10 Jahren 0
Für das Protokoll musste ich als Quelle "Microsoft-Windows-NetworkProfile" (W10 1709) angeben. Joril vor 6 Jahren 0
7
krrr

Es scheint, dass Start only if the following network connection is availablenach dem Windows 10-Jubiläums-Update ein Fehler vorliegt. 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 anstelle der SSID den Namen der Domäne. In diesem Fall lautet die Kategorie des Ereignisses "Domain Authenticated" und nicht "Private".

"Starten Sie nur, wenn die folgende Netzwerkverbindung verfügbar ist" scheint tatsächlich defekt zu sein. Wenn ich diese Option aktiviere und die Task auf Anforderung ausführte, erhalte ich folgende Fehlermeldung: `Task Scheduler Service ist nicht verfügbar. Der Taskplaner versucht, sich erneut mit ihm zu verbinden. Federico Destefanis vor 5 Jahren 0
4
Peer Gynt

Wenn Sie ein Thinkpad verwenden, können Sie die ThinkVantage Access Connection nutzen, die für Windows 7, Vista und XP verfügbar ist.

ThinkVantage Access Connection ist die mit ThinkPad gelieferte Network Connection Manager-Software. Falls nicht, kann sie von ihrer Support-Site heruntergeladen werden. Wenn Sie ein neues Profil für Ihren Standort erstellen, gibt es einen Assistenten, der Sie fragt, ob Sie eine Liste von Programmen so konfigurieren möchten, dass sie startet, wenn dieser Standort verbunden ist. Es bietet an, das Programm auch zu beenden, wenn das Netz nicht erreichbar 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 gibt es keine Möglichkeit, eine Liste von Programmen zu konfigurieren, die gestartet werden, wenn WLAN angeschlossen ist: Sie müssen eine Verbindung erstellen Profil, um die Liste zu enthalten.

Aus meiner eigenen Erfahrung versuche ich, die Verwendung der Software zu vermeiden - es dauert viel länger, eine Verbindung herzustellen als ohne, und manchmal wird beim Starten keine neue Verbindung hergestellt (dies kann durch manuelles erneutes Verbinden behoben werden).

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

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