ivo.seidel
Goto Top

Powershell URL+CronJob

Hallo Gemeinde,

mir fehlt die richtige Idee für folgendes Konstrukt und ich würde mich freuen, wenn ich sie hier finden könnte.

Ich habe ein Powershell-Script erstellt, welches im Minutentakt die Inhalte eines lokalen Ordners auf einen FTP-Server hochlädt.
Soweit so gut - funktioniert solange PS offen ist.

Dem Script würde ich demnächst den Auftrag geben wollen einen CronJob (auf einem all-inkl-Server) zu starten.
Sollte auch mittels Aufruf einer URL funktionieren - nehme ich an.
(im Browser klappt das ja schon mal face-smile)
Und ich müsste ihm auch den Auftrag geben diesen CronJohb wieder zu beenden (gleichzeitig mit der Beendigung des Uploads und des Powershell-Scriptes).

Was ich suche, ist eine Idee wie ich hier rangehen könnte.
Könnte ich dem PS-Script einen Dialog mitgeben, ala [Beenden] [Abbrechen] den der User sieht und der bei Klick auf [Beenden] o.g. Aktion (Beenden des Cronjobs + Beenden des PS-Scriptes) aufruft?

Ich würde mich freuen, hier etwas Input zu erhalten.

Besten Dank!
Ivo

Content-ID: 666253

Url: https://administrator.de/forum/powershell-url-cronjob-666253.html

Ausgedruckt am: 10.04.2025 um 05:04 Uhr

mayho33
mayho33 30.04.2021 um 00:25:30 Uhr
Goto Top
Hi!

Schau dir doch mal [System.Windows.Forms]::MessageBox an. Da jedes Enum einen eigenen Returncode hat, kannst du das optimal steuern.

https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.message ...

Grüße!
HansDampf06
HansDampf06 30.04.2021 um 08:17:08 Uhr
Goto Top
Mir ist Deine Fragestellung noch nicht ganz klar.

Du willst aus einem PS-Script einen CronJob aufrufen. Ein Cron(ical)Job ist nach seinem landläufigen Wortsinn unter Linux das, was die Aufgabenplanung unter Windows ist: ein zeitgesteuerter Task beziehungsweise mittels eines "Weckers" wird ein konkreter Job in einem bestimmten Intervall ausgeführt. Welche Rolle soll hierbei das bereits vorhandene PS-Script spielen, wenn der CronJob zudem wohl auf einem anderen Server läuft?

Der Hinweis von @mayho33 ist völlig zutreffend. Dennoch frage ich mich, warum ein minütlich ausgeführtes PS-Script immer wieder einer Benutzeraktion bedürfen soll? Hat der Benutzer nichts weiter zu tun, als minütlich die MessageBox des PS-Scripts zu bedienen? (Diesen anspruchsvollen Job übernehme ich sofort!) Sollte nicht das PS-Script, sondern der CronJob die Benutzerinteraktion benötigen, gilt dasselbe, weil der CronJob nach Deiner Beschreibung vom PS-Script abhängen soll.

Was soll der CronJob überhaupt machen? Was soll per URL aufgerufen werden? Der CronJob? Was klappt im Browser bereits?

Ist der "all-inkl-Server" linux- oder windowsbasiert?

Viele Grüße
HansDampf06
ivo.seidel
ivo.seidel 30.04.2021 um 09:29:52 Uhr
Goto Top
Hallo HansDampf06,

der CronJob auf dem Linux-Server nimmt minütlich die durch das PS-Script hochgeladenen Dateien entgegen und schreibt deren Inhalte in eine MYSQL-DB.
Er muss immer nur laufen, so lange das PS-Script auch Daten hochlädt - sonst hat er ja nichts zu tun.

Das PS-Script wird nur dann vom User ausgeführt, wenn es auch Daten (aus einem Zeitnahmesystem Rennstrecke) erhalten kann. Da auf Rennstrecken kein 24x7 Betrieb herrscht, sondern nur sporadisch Menschen und Maschinen um die Wette fahren, hat der CronJob zu >75% eines Jahres nichts zu tun.

Daher meine Überlegung die beiden Aktionen zusammen laufen zu lassen.
Ich vermute aber mal, dass mien Vorhaben dadurch verhindert wird, dass ich den CronJob nicht per URL deaktivieren kann.

Aber das hier : [System.Windows.Forms]::MessageBox schau ich mir trotzdem mal an. Danke mayho33!

Vielen Dank und viele Grüße
Ivo
MrCount
Lösung MrCount 30.04.2021 um 10:10:47 Uhr
Goto Top
Servus,

warum lässt du den CronJob nicht einfach jede Minute automatisch laufen?
Bau am Anfang eine Prüfung ein, ob Dateien vorhanden sind.
Wenn ja, dann soll er den weiteren Code ausführen.
Wenn nein, dann exit...
HansDampf06
Lösung HansDampf06 30.04.2021 um 10:38:54 Uhr
Goto Top
Ich frage: Wieso für diese Aufgabe überhaupt einen minütlichen CronJob, wenn inode auf den Zugang einer Datei dynamisch reagieren kann? Mit inode hat der Job erst und nur dann etwas zu tun (= tätig werden), wenn das PS-Script mit der jeweiligen Datei fertig ist. Verrenkungen sind dafür nicht nötig. Der Job muss ja auch nur die neue Datei in die Datenbank eintragen und damit hat es sich. Für die nächste Datei beginnt das Spiel von vorn.

Viele Grüße
HansDampf06
ivo.seidel
ivo.seidel 30.04.2021 um 11:57:37 Uhr
Goto Top
Ich danke Euch!
Manchmal hat man nen Knoten im Kopf .. so auch hier.

Lösung: Das PS-Script ruft eine URL auf nachdem der Upload auf dem Server ist.
Dabei werden die Dateien verarbeitet und ich erhalte das Ergebnis.
Ein CronJob ist da gar nicht notwendig.

Viele Grüße
Ivo Seidel