Question

I'm looking for an equivalent to a Cron system for Windows. The idea is to able to schedule a trigger and monitor whether it has run successfully or not.

What the system need to do is the following:

  • It should be able to trigger Win32 COM objects and/or executables.
  • It should be able to trigger .NET COM objects and/or .NET executables.
  • It should be able to trigger scripts written in any language, either based on native framework (Python, Perl, Ruby) or based on the DLR (IronPython, Ruby.NET, whatever)
  • The scripts should range between simple scripts that take a few seconds to fairly heavy ones that can take up to half an hour.

The monitoring aspect is critical. So basically I'm looking for the following:

  • If the script or executable fails then an e-mail should be sent or some other notification mechanism.
  • Every trigger should be logged so that we can look back and see when the code has failed.
  • The failure should easily be traced either through some sort of debug output or stack trace.

Are there any Windows developers out there who have created such a system? I know in the UNIX world there is Cron but what about in the Windows world?

Was it helpful?

Solution

You should be able to use the scheduled task for all the above.

a link to a guide: http://www.iopus.com/guides/winscheduler.htm

OTHER TIPS

At command prompt type 'at'

> at /?
The AT command schedules commands and programs to run on a computer at
a specified time and date. The Schedule service must be running to use
the AT command.

AT [\\computername] [ [id] [/DELETE] | /DELETE [/YES]]
AT [\\computername] time [/INTERACTIVE]
    [ /EVERY:date[,...] | /NEXT:date[,...]] "command"

\\computername     Specifies a remote computer. Commands are scheduled on the
                   local computer if this parameter is omitted.
id                 Is an identification number assigned to a scheduled
                   command.
/delete            Cancels a scheduled command. If id is omitted, all the
                   scheduled commands on the computer are canceled.
/yes               Used with cancel all jobs command when no further
                   confirmation is desired.
time               Specifies the time when command is to run.
/interactive       Allows the job to interact with the desktop of the user
                   who is logged on at the time the job runs.
/every:date[,...]  Runs the command on each specified day(s) of the week or
                   month. If date is omitted, the current day of the month
                   is assumed.
/next:date[,...]   Runs the specified command on the next occurrence of the
                   day (for example, next Thursday).  If date is omitted, the
                   current day of the month is assumed.
"command"          Is the Windows NT command, or batch program to be run.

I would suggest looking at revised Task Scheduler 2.0 in Vista/Server 2008. It is much more powerful than 1.0 in previous versions of Windows, now able to

  • Event based triggers, e.g. every time an Application event code 1053 is caused
  • Triggers on failed tasks (the biggest addition for me)
  • More built in actions, such as sending emails instead of calling blat.exe

Looking over your list, I believe that everything you are looking for is already there.

Have you looked at Windows Scheduler? It seems to meet most, if not all, of your requirements, and is already included in the OS. You can find it documented at MSDN

If you want a script to "trigger Win32 COM objects and/or executables", "trigger .NET COM objects and/or .NET executables", log failures and notify of failures by email, that sounds to me like a job for PowerShell.

PowerShell doesn't have logging and emailing done for you, rather it's a programming language where you can log or send email (or whatever) fairly easily.

I have scheduled PowerShell scripts to run using the "at" / "Task Scheduler" service, with success. It's a good combination.

Take a look at nnCron. I'm using a Lite version. It has a unix crontab syntax. There is a log file but as for more advanced monitoring aspects, it's up to your script/application to provide details, eg. return Result code (that will be logged).

nnCron Lite was the best cron clone for windows (free, no perl requirement, crontab, missed tasks, run as hidden window, set enviroment variable - useful for postgres "dump all" tool, etc.) that I found.

Have a look here: Cron for Windows. There also was some Cron-like software ported for (Free)DOS that should work on Windows, but I can't remember the name.

Have you tried JIT-Scheduler in combination with PowerShell?

http://shareme.com/download/jit-scheduler.html

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top