dasizzy
Goto Top

Kalndergesteurte Aufgabenplanung

Guten Morgen

Also ich habe folgendes Problem:

Die Windows Aufgabenplanung kann Kalender gesteuert verwendet werden. Jedoch kann ich, wenn ich z.B. angebe, dass ein Task am 3. 8. und 15. ausgeführt werden soll, dies nur für alle Monate am 3. 8. und 15. angeben.

Gibt es ein Interface für die Aufgabenplanung oder ein anderes Programm an dem ich z.B. sagen kann, dass am 3. 8. & 15. August, sowie am 11. 17. & 23. September Task ABC ausgeführt werden sollen, sowie Task XYZ am 16. & 28. August und 9. & 30. September.

Hintergrund ist, dass wir relativ viele Tasks haben, die Gegeneinander an bestimmten Tagen laufen sollen und der Administrationsaufwand pro Task und Monat einen Task zu erstellen (was ja dann mindestens 12 Tasks pro Task bedeuten würde) ziemlich umständlich und im Endeffekt sehr unübersichtlich wäre.

Das Beste wäre sozusagen ein Kalender in dem ich pro Tag jeden Task sehe der ausgeführt wird und problemlos ein Task hinzugefügt werden kann.

Vielleicht kennt ja jemand ein Programm, oder hat eine andere Idee.

MfG. Das Izzy

Content-Key: 349818

Url: https://administrator.de/contentid/349818

Ausgedruckt am: 19.03.2024 um 02:03 Uhr

Mitglied: beidermachtvongreyscull
beidermachtvongreyscull 22.09.2017 um 10:05:44 Uhr
Goto Top
Fange solche Feinheiten doch über Scripttechniken ab.

BATCH, VBSCRIPT und natürlich POWERSHELL bieten da so manches in unterschiedlichen Schwierigkeitsgraden.
Dann kannst Du nämlich mit den rudimentären Taskscheduler machen, was Du willst.

Ich gebe Dir ein Beispiel.
In meinem Veeam Sicherungsjob läuft als Pre- und Post-Jobscript ein und dasselbe und zwar bei jedem Lauf des Jobs.
Das Script unterscheidet, ob es Nachts oder am Tag ausgeführt wird.

@echo off
    setlocal enableextensions disabledelayedexpansion

    call :getTime now

    set "task=notask"  
	
	::Zeiteinstellung für die nächtlichen Aufgaben (Ausführung, wenn aktuelle Zeit zwischen 0:00 und 3:30 Uhr liegt)
    if "%now%" lss "03:30:00,00" (   
		if "%now%" geq "00:00:00,00" (   
			set "task=night"  
		)
	)

	::Zeiteinstellung für die Tagesaufgaben (Ausführung, wenn aktuelle Zeit zwischen 16:05 und 17:00 Uhr liegt)
    if "%now%" lss "18:00:00,00" (   
	    if "%now%" geq "16:05:00,00" (  
			set "task=day"  
		)
	)

    call :task_%task%

    echo %now%

    endlocal
    exit /b


:task_notask
	:: Script sofort beenden
	echo "Nichts machen!"  
	goto :eof

:task_day
    :: do daily task
	echo "Daily"  
	::Cache auf Platte schreiben
	REM start /wait c:\veeam_helper\sync64.exe -e e:
	::Mountpunkt E: aushängen
	REM start /wait c:\Windows\system32\mountvol.exe e: /p
	::USB-DriveBay der Sicherungsplatte ebenfalls vom System aushängen.
	REM start /wait c:\veeam_helper\deveject.exe -EjectId:"USBSTOR\DISK&VEN_INATECK&PROD_ASM1153E&REV_0\12345678910B&0"  
	goto :eof

:task_night
    :: do nightly task
	echo "Nightly"  
	c:\Windows\system32\format.com /Q /X e: /y
    goto :eof

:: getTime
::    This routine returns the current (or passed as argument) time
::    in the form hh:mm:ss,cc in 24h format, with two digits in each
::    of the segments, 0 prefixed where needed.
:getTime returnVar [time]
    setlocal enableextensions disabledelayedexpansion

    :: Retrieve parameters if present. Else take current time
    if "%~2"=="" ( set "t=%time%" ) else ( set "t=%~2" )  

    :: Test if time contains "correct" (usual) data. Else try something else  
    echo(%t%|findstr /i /r /x /c:"[0-9:,.apm -]*" >nul || (   
        set "t="  
        for /f "tokens=2" %%a in ('2^>nul robocopy "|" . /njh') do (  
            if not defined t set "t=%%a,00"  
        )
        rem If we do not have a valid time string, leave
        if not defined t exit /b
    )

    :: Check if 24h time adjust is needed
    if not "%t:pm=%"=="%t%" (set "p=12" ) else (set "p=0")  

    :: Separate the elements of the time string
    for /f "tokens=1-5 delims=:.,-PpAaMm " %%a in ("%t%") do (  
        set "h=%%a" & set "m=00%%b" & set "s=00%%c" & set "c=00%%d"   
    )

    :: Adjust the hour part of the time string
    set /a "h=100%h%+%p%"  

    :: Clean up and return the new time string
    endlocal & if not "%~1"=="" set "%~1=%h:~-2%:%m:~-2%:%s:~-2%,%c:~-2%" & exit /b  
Mitglied: DasIzzy
DasIzzy 22.09.2017 um 10:21:25 Uhr
Goto Top
Prinzipiell eine gute Idee das mit Powershell abzufangen, allerdings ist die Lösung für einen Anwendungsbetreuer , der lediglich auf seine Anwendungsserver zugreift und das dort mit "Klicki Bunti" lösen möchte, da der genannte Anwendungsbetreuer nicht wirklich mit Powershell vertraut ist.

Deshalb die Frage nach einem Interface oder einem Programm.
Mitglied: 133883
133883 22.09.2017 aktualisiert um 12:20:48 Uhr
Goto Top
Jedoch kann ich, wenn ich z.B. angebe, dass ein Task am 3. 8. und 15. ausgeführt werden soll, dies nur für alle Monate am 3. 8. und 15. angeben.
Nö geht damit auch, du kannst die Monate und Tage wählen:

screenshot

Gibt es ein Interface für die Aufgabenplanung oder ein anderes Programm an dem ich z.B. sagen kann, dass am 3. 8. & 15. August, sowie am 11. 17. & 23. September Task ABC ausgeführt werden sollen, sowie Task XYZ am 16. & 28. August und 9. & 30. September.
Das geht auch mit der Aufgabenplanung du brauchst ihn nur richtig nutzen. Btw. kannst du mehrere Zeittrigger anlegen...

screenshot

Prinzipiell eine gute Idee das mit Powershell abzufangen, allerdings ist die Lösung für einen Anwendungsbetreuer , der lediglich auf seine Anwendungsserver zugreift und das dort mit "Klicki Bunti" lösen möchte, da der genannte Anwendungsbetreuer nicht wirklich mit Powershell vertraut ist.
Mit Powershell kannst du wunderschöne GUIs zaubern:

screenshot

Gruß