一键导入
win-scheduler
Windows Task Scheduler — create, list, manage, and delete scheduled tasks for automated workflows, zero dependencies.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Windows Task Scheduler — create, list, manage, and delete scheduled tasks for automated workflows, zero dependencies.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Persistent agent memory via OpenViking — store and retrieve context across sessions using a tiered filesystem database. L0/L1/L2 context layers with semantic search.
Browser integration — open URLs, read bookmarks and history from Edge/Chrome, get active tabs, list downloads, zero dependencies.
Local AI inference via Ollama — run LLMs on-device, manage models, detect NPU/GPU/DirectML hardware, zero cloud dependencies.
System diagnostics — CPU, RAM, battery, GPU, network, processes, OS info via WMI, zero dependencies.
Read and search Windows Sticky Notes — access your notes via the local SQLite database using built-in winsqlite3.dll, zero dependencies.
Search, browse, and manage files and folders on Windows — file search, recent files, folder operations, disk info, zero dependencies.
| name | win-scheduler |
| description | Windows Task Scheduler — create, list, manage, and delete scheduled tasks for automated workflows, zero dependencies. |
| metadata | {"openclaw":{"emoji":"⏰","os":["win32"]}} |
Create and manage Windows scheduled tasks. Schedule one-time reminders, recurring automations, or startup tasks. Uses built-in ScheduledTasks PowerShell module.
Works on Windows 10/11. No external dependencies.
Lists non-Microsoft scheduled tasks (user/app tasks):
powershell.exe -NoProfile -Command "
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
Get-ScheduledTask | Where-Object { $_.TaskPath -notmatch '\\Microsoft\\' } | ForEach-Object {
$info = Get-ScheduledTaskInfo -InputObject $_ -ErrorAction SilentlyContinue
$next = if ($info.NextRunTime -and $info.NextRunTime.Year -gt 2000) { $info.NextRunTime.ToString('yyyy-MM-dd HH:mm') } else { '-' }
Write-Host ('{0,-40} {1,-10} Next: {2}' -f $_.TaskName, $_.State, $next)
}
"
powershell.exe -NoProfile -Command "
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$tasks = Get-ScheduledTask
$tasks | Group-Object State | ForEach-Object {
Write-Host ('{0}: {1}' -f $_.Name, $_.Count)
}
Write-Host ('Total: {0}' -f $tasks.Count)
"
powershell.exe -NoProfile -Command "
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
Get-ScheduledTask -TaskPath '\FOLDER_PATH\' | Select-Object TaskName, State | Format-Table -AutoSize
"
Replace FOLDER_PATH with the task folder (e.g., PCClaw, Lenovo).
powershell.exe -NoProfile -Command "
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$task = Get-ScheduledTask -TaskName 'TASK_NAME' -TaskPath '\TASK_PATH\'
$info = Get-ScheduledTaskInfo -InputObject $task
Write-Host ('Name: ' + $task.TaskName)
Write-Host ('Path: ' + $task.TaskPath)
Write-Host ('State: ' + $task.State)
Write-Host ('Description: ' + $task.Description)
Write-Host ('Last Run: ' + $info.LastRunTime)
Write-Host ('Next Run: ' + $info.NextRunTime)
Write-Host ('Last Result: ' + $info.LastTaskResult)
Write-Host ''
Write-Host '--- Triggers ---'
$task.Triggers | ForEach-Object {
$type = $_.CimClass.CimClassName -replace 'MSFT_Task', '' -replace 'Trigger', ''
Write-Host (' Type: {0}, Start: {1}, Enabled: {2}' -f $type, $_.StartBoundary, $_.Enabled)
}
Write-Host ''
Write-Host '--- Actions ---'
$task.Actions | ForEach-Object {
Write-Host (' Execute: {0}' -f $_.Execute)
Write-Host (' Args: {0}' -f $_.Arguments)
}
"
Replace TASK_NAME and TASK_PATH (e.g., \ for root, \PCClaw\ for PCClaw folder).
Runs a command once at a specific date/time:
powershell.exe -NoProfile -Command "
$action = New-ScheduledTaskAction -Execute 'PROGRAM' -Argument 'ARGUMENTS'
$trigger = New-ScheduledTaskTrigger -Once -At 'DATETIME'
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
Register-ScheduledTask -TaskName 'TASK_NAME' -TaskPath '\PCClaw\' -Action $action -Trigger $trigger -Settings $settings -Description 'DESCRIPTION'
Write-Host 'Task created: TASK_NAME at DATETIME'
"
PROGRAM: executable to run (e.g., powershell.exe, notepad.exe)ARGUMENTS: command-line arguments (e.g., -NoProfile -Command "...")DATETIME: when to run (e.g., 2026-02-15 09:00, 2026-03-01T14:30)TASK_NAME: name for the taskDESCRIPTION: what the task doespowershell.exe -NoProfile -Command "
$time = (Get-Date).AddMinutes(30)
$msg = 'REMINDER_TEXT'
$action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument ('-NoProfile -Command \"Add-Type -AssemblyName System.Windows.Forms; [System.Windows.Forms.MessageBox]::Show(''{0}'', ''PCClaw Reminder'', ''OK'', ''Information'')\"' -f $msg)
$trigger = New-ScheduledTaskTrigger -Once -At $time
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
Register-ScheduledTask -TaskName 'PCClaw-Reminder' -TaskPath '\PCClaw\' -Action $action -Trigger $trigger -Settings $settings -Description $msg
Write-Host ('Reminder set for ' + $time.ToString('HH:mm'))
"
Replace REMINDER_TEXT with the reminder message.
powershell.exe -NoProfile -Command "
$action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-NoProfile -ExecutionPolicy Bypass -File \"SCRIPT_PATH\"'
$trigger = New-ScheduledTaskTrigger -Once -At 'DATETIME'
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
Register-ScheduledTask -TaskName 'TASK_NAME' -TaskPath '\PCClaw\' -Action $action -Trigger $trigger -Settings $settings -Description 'DESCRIPTION'
"
Runs every day at a specified time:
powershell.exe -NoProfile -Command "
$action = New-ScheduledTaskAction -Execute 'PROGRAM' -Argument 'ARGUMENTS'
$trigger = New-ScheduledTaskTrigger -Daily -At 'TIME'
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
Register-ScheduledTask -TaskName 'TASK_NAME' -TaskPath '\PCClaw\' -Action $action -Trigger $trigger -Settings $settings -Description 'DESCRIPTION'
Write-Host 'Daily task created: TASK_NAME at TIME every day'
"
TIME: time of day (e.g., 09:00, 17:30, 06:00AM)powershell.exe -NoProfile -Command "
$action = New-ScheduledTaskAction -Execute 'PROGRAM' -Argument 'ARGUMENTS'
$trigger = New-ScheduledTaskTrigger -Daily -DaysInterval INTERVAL -At 'TIME'
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
Register-ScheduledTask -TaskName 'TASK_NAME' -TaskPath '\PCClaw\' -Action $action -Trigger $trigger -Settings $settings -Description 'DESCRIPTION'
"
Replace INTERVAL with number of days (e.g., 2 for every other day, 7 for weekly).
Runs on specific days of the week:
powershell.exe -NoProfile -Command "
$action = New-ScheduledTaskAction -Execute 'PROGRAM' -Argument 'ARGUMENTS'
$trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek DAY_LIST -At 'TIME'
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
Register-ScheduledTask -TaskName 'TASK_NAME' -TaskPath '\PCClaw\' -Action $action -Trigger $trigger -Settings $settings -Description 'DESCRIPTION'
"
DAY_LIST: comma-separated days (e.g., Monday,Wednesday,Friday or Sunday)Runs when the user logs in:
powershell.exe -NoProfile -Command "
$action = New-ScheduledTaskAction -Execute 'PROGRAM' -Argument 'ARGUMENTS'
$trigger = New-ScheduledTaskTrigger -AtLogOn
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
Register-ScheduledTask -TaskName 'TASK_NAME' -TaskPath '\PCClaw\' -Action $action -Trigger $trigger -Settings $settings -Description 'DESCRIPTION'
Write-Host 'Logon task created: TASK_NAME'
"
Runs when the computer starts (before logon):
powershell.exe -NoProfile -Command "
$action = New-ScheduledTaskAction -Execute 'PROGRAM' -Argument 'ARGUMENTS'
$trigger = New-ScheduledTaskTrigger -AtStartup
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
Register-ScheduledTask -TaskName 'TASK_NAME' -TaskPath '\PCClaw\' -Action $action -Trigger $trigger -Settings $settings -Description 'DESCRIPTION'
Write-Host 'Startup task created: TASK_NAME'
"
Note: Startup tasks may require admin privileges depending on what they execute.
Manually trigger an existing task immediately:
powershell.exe -NoProfile -Command "
Start-ScheduledTask -TaskName 'TASK_NAME' -TaskPath '\TASK_PATH\'
Write-Host 'Task triggered: TASK_NAME'
"
powershell.exe -NoProfile -Command "
Stop-ScheduledTask -TaskName 'TASK_NAME' -TaskPath '\TASK_PATH\'
Write-Host 'Task stopped: TASK_NAME'
"
powershell.exe -NoProfile -Command "
Enable-ScheduledTask -TaskName 'TASK_NAME' -TaskPath '\TASK_PATH\' | Out-Null
Write-Host 'Task enabled: TASK_NAME'
"
powershell.exe -NoProfile -Command "
Disable-ScheduledTask -TaskName 'TASK_NAME' -TaskPath '\TASK_PATH\' | Out-Null
Write-Host 'Task disabled: TASK_NAME'
"
powershell.exe -NoProfile -Command "
Unregister-ScheduledTask -TaskName 'TASK_NAME' -TaskPath '\TASK_PATH\' -Confirm:`$false
Write-Host 'Task deleted: TASK_NAME'
"
List only tasks created by PCClaw (stored in \PCClaw\ folder):
powershell.exe -NoProfile -Command "
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$tasks = Get-ScheduledTask -TaskPath '\PCClaw\' -ErrorAction SilentlyContinue
if (-not $tasks) {
Write-Host 'No PCClaw scheduled tasks found.'
} else {
foreach ($task in $tasks) {
$info = Get-ScheduledTaskInfo -InputObject $task -ErrorAction SilentlyContinue
$next = if ($info.NextRunTime -and $info.NextRunTime.Year -gt 2000) { $info.NextRunTime.ToString('yyyy-MM-dd HH:mm') } else { '-' }
$last = if ($info.LastRunTime -and $info.LastRunTime.Year -gt 2000) { $info.LastRunTime.ToString('yyyy-MM-dd HH:mm') } else { 'never' }
Write-Host ('{0}' -f $task.TaskName)
Write-Host (' State: {0} | Last: {1} | Next: {2}' -f $task.State, $last, $next)
Write-Host (' {0}' -f $task.Description)
}
}
"
Remove all tasks in the \PCClaw\ folder:
powershell.exe -NoProfile -Command "
$tasks = Get-ScheduledTask -TaskPath '\PCClaw\' -ErrorAction SilentlyContinue
if (-not $tasks) {
Write-Host 'No PCClaw tasks to remove.'
} else {
$count = 0
foreach ($task in $tasks) {
Unregister-ScheduledTask -InputObject $task -Confirm:`$false
Write-Host (' Removed: ' + $task.TaskName)
$count++
}
Write-Host ('{0} task(s) removed.' -f $count)
}
"
Export a task definition to XML (for backup or transfer):
powershell.exe -NoProfile -Command "
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$xml = Export-ScheduledTask -TaskName 'TASK_NAME' -TaskPath '\TASK_PATH\'
$xml
"
1. win-scheduler: create one-time task with MessageBox action
2. Task fires at the specified time → popup appears
3. Optionally combine with win-notify for toast notification instead
1. win-scheduler: create daily task at 09:00
2. Action runs a PowerShell script that:
- Checks weather (via web request)
- Lists today's calendar events
- Shows unread notifications
3. Combine with win-tts to read it aloud
1. win-scheduler: create weekly task (e.g., every Sunday at 02:00)
2. Action runs a PowerShell script that:
- Uses win-files to copy important folders
- Compresses to a timestamped archive
- Sends win-notify when done
1. win-scheduler: create logon task
2. Action: Start-Process for the desired application
3. Runs automatically every time the user logs in
1. win-scheduler: create daily task
2. Action runs win-sysinfo to check CPU, RAM, battery
3. Logs results or sends win-notify if anomalies detected
\PCClaw\ in Task Scheduler for easy management. Use Task Scheduler GUI (taskschd.msc) to browse.-AllowStartIfOnBatteries -DontStopIfGoingOnBatteries so tasks run on laptops.schtasks.exe or the Task Scheduler GUI.-Trigger parameter.-WorkingDirectory 'PATH' to New-ScheduledTaskAction if the script needs a specific directory.-WindowStyle Hidden to PowerShell arguments to run silently.taskschd.msc or Start-Process taskschd.msc.