Jump to content
Milka

Batch bei WLAN Verbindung ausführen

Empfohlene Beiträge

Hallo!

 

Mein Problem betrifft:

Windows 10 Prof auf einem Tablet, Netzwerkfreigabe eines Unix-Servers

 

Ich habe folgendes Problem:

Eine Software soll auf einen manuellen Auslöser hin Daten auf ein Netzlaufwerk schieben (vereinfach beschrieben).

Das Netzlaufwerk ist als "N:" verbunden.

 

  • Das Gerät wird Morgens mit aktiver WLAN-Verbindung gestartet, das Netzlaufwerk verbindet sich.
  • Während des Mobilen Einsatzes wird das Netzlaufwerk als nicht verbunden markiert.
  • Das Gerät kommt gegen Abend zurück, verbindet sich mit dem WLAN, das Netzlaufwerk wird nicht wieder als aktiv markiert.
  • Die Software will auf das Netzlaufwerk schreiben, kann dies nicht und bricht ab (weil inaktiv).
  • Doppelklickt der Nutzer das Netzlaufwerk im Explorer, wird es als aktiv markiert und die Software kann Dateien kopieren.

 

Es ist laut Hersteller nicht möglich, dies auf UNC Pfade dauerhaft sauber umzustellen, die Software ist auf das Netzlaufwerk angewiesen.

 

Meine Idee einer Lösung:

Eine Batchdatei, die das Netzlaufwerk pingt, und bei erfolgreichem Ping dieses neu verbindet.

 

Ich würde dies gern an das Event knüpfen, dass sich das Gerät mit dem WLAN verbindet.

Hier meine Frage:

Ich kann im Eventviewer einfach nichts finden, was mit dieser Verbindung zu tun hat und woran ich die Batch hängen kann (Event-ID).

 

Hier der vollständigkeit halber die Batch (ein Entwurf, daher auch noch "pause" etc enthalten, sowie ein Platzhalter für eine alternative lokale Aktion wenn das Laufwerk nicht verfügbar ist)

 


ping IPSERVER -n 1
if errorlevel 1 goto nichtda
echo "Errorlevel1"
net use n: /del /y
net use n: "\\IPSERVER\ORDNERFREIGABE"
goto end
:nichtda
:: Alternativ lokal verbinden?
:end
pause

 

Vielen Dank und Grüße

Milka

bearbeitet von Milka

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Moin,

 

ob du ein passendes Event dafür findest, kann ich nicht sagen. Ist eine Recherche wert, man müsste dann aber testen, ob es läuft wie gewünscht.

 

EInfacher wäre evtl., per Taskplaner das Skript periodisch aufzurufen und es dann die Gegebenheiten prüfen zu lassen. Der Ressourcenbedarf dafür dürfte sehr überschaubar sein. Mögliche Logik:

  • Skript läuft per Taskplaner z.B. alle 5 Minuten
  • Erster Check: Ist das Zielnetzwerk erreichbar? Ein einfacher Ping dürfte ausreichen.
    • Falls nein: Beenden.
    • Falls ja: Zweiter Check: Funktioniert das verbundene Netzlaufwerk?
      • Falls ja: Kopierjob, User benachrichtigen oder was auch immer.
      • Falls nein: Netzlaufwerk trennen und neu verbinden
      • Zweiten Check erneut ausführen, evtl. einen Schleifenzähler, der den Vorgang bei wiederholtem Misserfolg abbricht.

Zu dem Erreichbarkeitscheck:

[Wie führe ich eine Aktion nur aus, wenn der Ziel-Host erreichbar ist? | faq-o-matic.net]
https://www.faq-o-matic.net/2003/10/12/wie-fuehre-ich-eine-aktion-nur-aus-wenn-der-ziel-host-erreichbar-ist/

 

 

Gruß, Nils

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Moin,

 

danke für die Antwort.

Ich würde die Lösung mit dem Event zwar erstmal priorisieren, habe aber die Batch jetzt erst einmal so umgebaut, dass sie per Aufgabenplanung funktioniert.


ping IPSERVER -n 1
if errorlevel 1 goto ende
IF EXIST N:\ goto ende
net use n: /del /y
net use n: "\\IPSERVER\FREIGABE"
goto ende

:ende

 

Sollte noch jemand über die Ereignis ID einer WLAN-Verbindung stoßen - ich würd mich freuen. Natürlich suche ich auch selbst noch weiter, allerdings habe ich nach vielen erfolglosen Versuchen grad nicht so unbedingt die Hoffnung direkt fündig zu werden ;-)

 

LG

Milka

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hi,

vor 2 Minuten schrieb Milka:

Sollte noch jemand über die Ereignis ID einer WLAN-Verbindung stoßen - ich würd mich freuen. Natürlich suche ich auch selbst noch weiter, allerdings habe ich nach vielen erfolglosen Versuchen grad nicht so unbedingt die Hoffnung direkt fündig zu werden ;-)

 

ich habe schon bei Notebooks "Verbindungsmanager" vom Hersteller gesehen, da konnte man verschiedenen Netzwerken Profile zuordnen die AFAIK auch dann Scripts ausführen konnten. Evtl. gibt es sowas auch als gesonderte Software, die dann nicht vom "Hardware-Hersteller" ist.

 

Gruß

Jan

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo,

 

event-id 10000 könnte weiterhelfen, auch die Aufgabenplanung von Windows hat als Trigger 'nur ausführen wenn mit dem und dem Netzwerk verbunden'

 

Schau noch 'Popd' an statt zwei mal 'Net use'!

 

LG

ente

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo Testeperson,

 

die Idee ist grundsätzlich gut und ich behalte sie als Alternative im Kopf. Allerdings ist zusätzliche Software nicht unbedingt mein Favorit, ich würde erstmal die untere Lösung probieren. ;-)

 

Hallo Ente,

 

ganz lieben Dank, diese Idee ist verdammt gut!

Manchmal sieht man vor lauter Süßkram die Schokolade nicht mehr :)

 

Das werde ich so umsetzen und testen!

 

LG

Milka

bearbeitet von Milka

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo nochmal.

Sorry, ich muss nun doch nochmal etwas dazu fragen :eye2:

Die Batch läuft soweit, und ich wäre mit der Lösung, per Aufgabenplanung zu starten (bei Benutzeranmeldung und Entsperren der Arbeitsstation) auch zufrieden - bekomme es aber leider nicht ans Laufen.

Vermutlich mache ich irgendwo einen blöden Fehler, den ich grad einfach nicht sehe :sauer2:

 

Ich lege eine Aufgabe an

 

  • Unabhängig von der Benutzeranmeldung ausführen
  • Mit höchsten Priviliegien ausführen
  • Tigger:
    • Entsperren der Arbeitsstation
      • Verzögern für 1 Minute
      • Jeder Benutzer
    • Anmelden
      • Jeder Benuter
      • Verzögern für 1 Minute
  • Aktionen Programm starten
    • C:\Windows\SysWOW64\cmd.exe
    • Argument hinzufügen (mehrere Varianten getestet):
      • /c C:\Users\USERNAME\Desktop\BATCHNAME.cmd
      • /c "C:\Users\USERNAME\Desktop\BATCHNAME.cmd"
      • /c start "C:\Users\USERNAME\Desktop\BATCHNAME.cmd"
  • Bedingungen
    • Nur starten, wenn folgende Netzwerkverbindung verfügbar ist (auch ohne Bedingung getestet)
      • WLAN

Wenn ich die Aufgabe nun manuell starte läuft diese, die Batch wird aber nicht gestartet, im Verlauf sehe ich aber nur "Aufgabe erfolgreich abgeschlossen - Ereignis102"

 

Den Inhalt der Batchdatei habe ich seit meinem letzten Post nicht mehr verändert - wenn ich diese ohne Aufgabenplanung starte läuft diese auch korrekt.

 

LG

Milka

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor einer Stunde schrieb Milka:

 

  • Unabhängig von der Benutzeranmeldung ausführen
  • Mit höchsten Priviliegien ausführen
  • Tigger:
    • Entsperren der Arbeitsstation
      • Verzögern für 1 Minute
      • Jeder Benutzer
    • Anmelden
      • Jeder Benuter
      • Verzögern für 1 Minute
  • Aktionen Programm starten
    • C:\Windows\SysWOW64\cmd.exe
    • Argument hinzufügen (mehrere Varianten getestet):
      • /c C:\Users\USERNAME\Desktop\BATCHNAME.cmd
      • /c "C:\Users\USERNAME\Desktop\BATCHNAME.cmd"
      • /c start "C:\Users\USERNAME\Desktop\BATCHNAME.cmd"
  • Bedingungen
    • Nur starten, wenn folgende Netzwerkverbindung verfügbar ist (auch ohne Bedingung getestet)
      • WLAN

Wenn ich die Aufgabe nun manuell starte läuft diese, die Batch wird aber nicht gestartet, im Verlauf sehe ich aber nur "Aufgabe erfolgreich abgeschlossen - Ereignis102"

 

Die ersten beiden Teile der Aufgabe würde ich wegnehmen und als normaler User laufen lassen.

 

Wird denn das Argument USERNAME korrekt aufgelöst? Was steht im Eventlog bei den Aufgaben zu dem Thema? Lass das /c doch einfach mal weg und schau ob die Batch gestartet wird.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
vor 5 Minuten schrieb Sunny61:

 

Die ersten beiden Teile der Aufgabe würde ich wegnehmen und als normaler User laufen lassen.

 

Wird denn das Argument USERNAME korrekt aufgelöst? Was steht im Eventlog bei den Aufgaben zu dem Thema? Lass das /c doch einfach mal weg und schau ob die Batch gestartet wird.

Entschuldigung,

ich habe natürlich meinen Usernamen genommen - den hier nur durch den Capslocktext ersetzt. Das hätte ich dazu schreiben können.

 

Ich habe deine Ideen soweit umgesetzt, sprich meinen Benutzer, keine erhöhten Rechte, und die /c ausgelassen.

Immerhin wird nun sichtbar die CMD gestartet, aber die Batch nicht.

Mit den anderen Schreibweisen als Argument startet wieder nichts (sichtbar).

Weiterhin: Verlauf sagt alles wird korrekt ausgeführt.

 

vor 51 Minuten schrieb NorbertFe:

Unter welchem Account läuft denn dieser task? Netzlaufwerke benötigen einen nutzerkontext afair.

Ich habe als Administrator getestet, auch mit den Rechten des angemeldeten Benutzers.

 

LG

Milka

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hallo nochmal.

Update: Es läuft.

 

Ich denke durch das viele Testen und experimentieren mit den Rechten hatte ich wohl alles verhackt ;-)

Danke Sunny, dein Tipp war wegweisend; folgendes funktioniert nun: (In Capslock geschriebene Pfadteile sind Platzhalter für den eigentlichen Usernamen/ Dateinamen)

 

  • Allgemein
    • nur ausführen wenn Benutzer angemeldet ist
    • der aktuelle Benutzer (kein Admin, keine höheren Privilegien; der Benutzer ist ohne Administrator)
  • Trigger
    • Beim Aufheben der Arbeitsstationsperre
    • Verzögern für 1 Minute
    • Beim Anmelden
    • Verzögerung 1 Minute
  • Aktionen
    • programm starten
      • C:\Windows\SysWOW64\cmd.exe
      • Argumente: /c C:\Users\USERNAME\Desktop\BATCHNAME.cmd

 

Ganz lieben Dank!

 

Grüße

Milka

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden

×