Task Scheduler can be compared tocron oranacron onUnix-likeoperating systems. This service should not be confused with thescheduler, which is a core component of the OSkernel that allocatesCPU resources to processes already running.
Task Scheduler 1.0 is included withWindows NT 4.0[7] (withInternet Explorer 4.0 or later),Windows 2000,[7]Windows XP[8] andWindows Server 2003.[9] It runs as aWindows Service, and the task definitions and schedules are stored inbinary.job files. Tasks are manipulated directly by manipulating the.job files. Each task corresponds to single action. OnWindows 95 (withInternet Explorer 4.0 or later),Windows 98 andWindows Me, the Task Scheduler runs as an ordinary program,mstask.exe. It also displays a status icon in the notification area on Windows 95 and Windows 98 and runs as a hidden service on Windows Me, but can be made to show a tray icon.[1] Computer programs andscripts can access the service through sixCOMinterfaces.[10] Microsoft provides a scheduling agent DLL, a sampleVBScript and a configuration file to automate Task Scheduler.[11]
In addition to the graphical user interface for Task Scheduler inControl Panel, Windows provides two command-line tools for managing scheduled task:at.exe (deprecated)[12] andschtasks.exe.[5][13][14] However,at.exe cannot access tasks created or modified by Control Panel orschtasks.exe.[15] Also, tasks created withat.exeare not interactive by default; interactivity needs to be explicitly requested. The binary ".job" files which the AT command produces are stored in the %WINDIR%\Tasks directory.[16][17]
Task Scheduler 2.0 was introduced withWindows Vista[18] and included inWindows Server 2008 as well.[19][9] The redesigned Task Scheduler user interface is now based onManagement Console. In addition to running tasks on scheduled times or specified intervals, Task Scheduler 2.0 also supports calendar and event-based triggers, such as starting a task when a particular event is logged to theevent log, or when a combination of events has occurred. Also, several tasks that are triggered by the same event can be configured to run either simultaneously or in a pre-determined chained sequence of a series of actions, instead of having to create multiple scheduled tasks. Tasks can also be configured to run based on system status such as being idle for a pre-configured amount of time, on startup,[20] logoff, or only during or for a specified time.XPath expressions can be used to filter events from theWindows Event Log. Tasks can also be delayed for a specified time after the triggering event has occurred, or repeat until some other event occurs. Actions that need to be done if a task fails can also be configured. The actions that can be taken in response to triggers, both event-based as well as time-based, not only include launching applications but also take a number of custom actions. Task Scheduler includes a number of actions built-in, spanning a number of applications; including send an e-mail, show a message box, or fire aCOM handler when it is triggered. Custom actions can also be specified using the Task Scheduler API. Task Scheduler keeps a history log of all execution details of all the tasks.[21] Windows Vista uses Task Scheduler 2.0 to run various system-level tasks;[22] consequently, the Task Scheduler service can no longer be disabled (except with a simple registry tweak).
Task Scheduler 2.0 exposes anAPI to allow computer programs and scripts create tasks.[19][23] It consists of 42COMinterfaces.[24] The Windows API does not, however, include amanaged wrapper for Task Scheduler though an open source implementation exists.[25] The job files for Task Scheduler 2.0 areXML-based, and are human-readable, conforming to theTask Scheduler Schema.[19][23]
New security features, including usingCredential Manager to passwords for tasks onworkgroup computers and usingActive Directory for task credentials ondomain-joined computers so that they cannot be retrieved easily. Also, scheduled tasks are executed in their own session, instead of the same session as system services or the current user.
Ability to wake up a machine remotely or usingBIOS timer from sleep or hibernation to execute a scheduled task or run a previously scheduled task after a machine gets turned on.
Ability to attachtasks toevents directly from theEvent Viewer.
The Task Scheduler service works by managingTasks;Task refers to the action (or actions) taken in response to trigger(s). A task is defined by associating a set of actions, which can include launching an application or taking some custom-defined action, to a set of triggers, which can either be time-based or event-based. In addition, a task also can contain metadata that defines how the actions will be executed, such as the security context the task will run in. Tasks are serialized to.job files and are stored in thespecial folder titledTask Folder, organized in subdirectories. Programmatically, the task folder is accessed using theITaskFolder interface or theTaskFolder scripting object and individual tasks using theIRegisteredTask interface orRegisteredTask object.[26]
On Windows 2000 and Windows XP, when a computer is prepared fordisk imaging with thesysprep utility, it cannot run tasks configured to run in the context of theSYSTEM account. Sysprep changes thesecurity identifier (SID) to avoid duplication but does not update scheduled tasks to use the new SID. Consequently, the affected tasks fail to run. There is no solution for this problem but one may reschedule the affected tasks to work around the issue.[29]
On Windows Vista or Windows Server 2008, the next execution time displayed in Task Scheduler may be wrong. Microsoft issued ahotfix to remedy this issue.[30]