| name | scheduled-tasks |
| description | Windows Task Scheduler management via PowerShell. Create, query, modify, and disable scheduled tasks safely. |
| version | 1.0.0 |
Scheduled Tasks Skill
適用場景
- 建立定期執行的自動化任務
- 查詢/管理現有排程工作
- 停用或刪除不需要的排程
建立排程工作
# 每天早上 8 點執行腳本
$action = New-ScheduledTaskAction `
-Execute "pwsh.exe" `
-Argument "-NonInteractive -File C:\scripts\daily-report.ps1"
$trigger = New-ScheduledTaskTrigger `
-Daily `
-At "08:00"
$settings = New-ScheduledTaskSettingsSet `
-ExecutionTimeLimit (New-TimeSpan -Hours 1) `
-RestartCount 3 `
-RestartInterval (New-TimeSpan -Minutes 5)
$principal = New-ScheduledTaskPrincipal `
-UserId $env:USERNAME `
-LogonType Interactive
Register-ScheduledTask `
-TaskName "DailyReport" `
-TaskPath "\MyAutomation\" `
-Action $action `
-Trigger $trigger `
-Settings $settings `
-Principal $principal `
-Description "每日自動報告" `
-WhatIf # 先預覽!
查詢排程工作
# 列出所有自訂排程工作
Get-ScheduledTask | Where-Object TaskPath -like "\MyAutomation\*" |
Select-Object TaskName, State, @{N='NextRun';E={
($_ | Get-ScheduledTaskInfo).NextRunTime
}} | Format-Table -AutoSize
# 查看最近執行記錄
Get-ScheduledTask -TaskName "DailyReport" |
Get-ScheduledTaskInfo |
Select-Object LastRunTime, LastTaskResult, NextRunTime
停用/刪除排程工作
# 停用(保留設定)
Disable-ScheduledTask -TaskName "DailyReport" -TaskPath "\MyAutomation\"
# 刪除(不可回復,先確認)
$taskName = "DailyReport"
$confirm = Read-Host "確認刪除排程工作 '$taskName'?(y/N)"
if ($confirm -eq 'y') {
Unregister-ScheduledTask -TaskName $taskName -TaskPath "\MyAutomation\" -Confirm:$false
}
範例腳本
examples/create-daily-task.ps1 — 建立每日排程
examples/audit-scheduled-tasks.ps1 — 稽核所有排程工作