tags:

views:

898

answers:

9

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?

+5  A: 

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

Daniel
How does this answer invoking COM/.NET objects (not executables)? How does this have the monitoring the OP is asking for?
Aardvark
Since it is possible to call vb-scripts (which can call com) and bat-files it's entirely possible to invoke com-objects thru the scheduler. As for monitoring, it might have to be embedded in called scripts.
Daniel
+1  A: 

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

Ken White
A: 

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.

schnaader
+5  A: 

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.
Vardhan Varma
+1  A: 

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.

Anthony
A: 

Have you tried JIT-Scheduler in combination with PowerShell?

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

prinzdezibel
+3  A: 

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.

boflynn
+1  A: 
Davorin
A: 

The Windows scheduler will not run on an hourly or by the minute basis. Daily is the most frequent period available.

David Sutton