In Windows Server 2008, the Task Scheduler stores its configuration data in multiple locations, primarily using XML-based job files and registry entries. The core storage paths are:
Primary locations:
1. %SystemRoot%\System32\Tasks (actual job files)
2. %SystemRoot%\Tasks (legacy compatibility folder)
3. HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache (registry configuration)
Each scheduled task is stored as an individual XML file in the System32\Tasks folder. Here's a sample structure:
2023-01-01T00:00:00
DOMAIN\Admin
2023-01-01T08:00:00
true
1
C:\Scripts\backup.bat
You can retrieve task information using PowerShell:
# List all scheduled tasks
Get-ChildItem "$env:SystemRoot\System32\Tasks" | Select-Object Name,LastWriteTime
# Read a specific task's XML content
[xml]$taskXML = Get-Content "$env:SystemRoot\System32\Tasks\MyScheduledTask"
$taskXML.Task.Actions.Exec.Command
The TaskCache registry branch contains security descriptors, task state information, and other metadata:
Key Paths:
- HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tasks
- HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree
To properly back up or migrate scheduled tasks between servers:
# Export all tasks
$tasks = Get-ScheduledTask
foreach ($task in $tasks) {
Export-ScheduledTask -TaskName $task.TaskName -TaskPath $task.TaskPath |
Out-File "C:\Backup\$($task.TaskName -replace '\\','_').xml"
}
# Alternative method using schtasks.exe
schtasks /query /xml > "C:\Backup\AllTasks.xml"
In Windows Server 2008, the Task Scheduler stores its scheduled tasks as individual XML files in a specific directory structure. These files contain all configuration details including triggers, actions, and security contexts.
The core location where tasks are stored is:
C:\Windows\System32\Tasks
Each task appears as a separate file with the .job
extension in this directory. However, the actual data is stored in XML format despite the extension.
For system-level tasks and special folders, you might find additional configurations at:
C:\Windows\System32\Tasks\Microsoft C:\Windows\System32\Tasks\WPD
Here's a PowerShell script to enumerate all scheduled tasks and their storage paths:
Get-ChildItem -Path "C:\Windows\System32\Tasks" -Recurse -Force | Where-Object { $_.Extension -eq ".job" } | Select-Object FullName, LastWriteTime
To view the actual XML configuration of a specific task:
$taskName = "MyScheduledTask" $taskPath = "C:\Windows\System32\Tasks\$taskName" [xml]$xmlContent = Get-Content $taskPath $xmlContent.InnerXml
When migrating tasks between servers, you should:
- Copy the entire
C:\Windows\System32\Tasks
directory - Preserve NTFS permissions (use
icacls
orrobocopy
) - Register tasks using
schtasks /Create
if needed
While the primary storage is file-based, some metadata exists in the registry at:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache