本文目录导读:

我来介绍几种获取Windows任务计划的方法,包括PowerShell和命令行脚本。
PowerShell 脚本方法
获取所有任务计划
# 获取所有任务计划(包括非活动) Get-ScheduledTask | Select-Object TaskName, TaskPath, State, Description
获取特定路径下的任务
# 获取根目录下的任务 Get-ScheduledTask -TaskPath "\" # 获取指定文件夹的任务 Get-ScheduledTask -TaskPath "\Microsoft\Windows\"
详细查看单个任务
# 查看任务详细信息 Get-ScheduledTask -TaskName "任务名称" | Select-Object * # 查看任务的触发器 Get-ScheduledTask -TaskName "任务名称" | Get-ScheduledTaskInfo # 查看任务的所有属性 $task = Get-ScheduledTask -TaskName "任务名称" $task | Format-List *
导出任务配置
# 导出所有任务到文本文件 Get-ScheduledTask | Export-ScheduledTask | Out-File -FilePath "C:\Tasks.txt" # 导出单个任务为XML Export-ScheduledTask -TaskName "任务名称" -TaskPath "\" | Out-File -FilePath "C:\task.xml"
命令行方法(cmd)
使用schtasks命令
:: 列出所有任务 schtasks /Query :: 查看详细信息 schtasks /Query /V /FO LIST :: 以CSV格式导出 schtasks /Query /FO CSV > tasks.csv :: 查看特定任务 schtasks /Query /TN "任务名称" :: 查看特定文件夹的任务 schtasks /Query /TN "\Microsoft\Windows\*"
完整脚本示例
PowerShell 完整脚本
# 获取并格式化所有任务计划信息
function Get-AllScheduledTasks {
Write-Host "=== Windows 任务计划列表 ===" -ForegroundColor Cyan
# 获取所有任务
$tasks = Get-ScheduledTask
# 按路径分组显示
$tasks | Group-Object Path | ForEach-Object {
Write-Host "`n[文件夹: $($_.Name)]" -ForegroundColor Yellow
$_.Group | ForEach-Object {
$info = $_ | Get-ScheduledTaskInfo
Write-Host " 任务名: $($_.TaskName)" -ForegroundColor Green
Write-Host " 状态: $($_.State)" -ForegroundColor Green
Write-Host " 上次运行: $($info.LastRunTime)" -ForegroundColor Green
Write-Host " 下次运行: $($info.NextRunTime)" -ForegroundColor Green
Write-Host " 上次结果: $($info.LastTaskResult)" -ForegroundColor Green
Write-Host "---"
}
}
}
# 调用函数
Get-AllScheduledTasks
导出为CSV文件
# 导出到CSV文件
Get-ScheduledTask | Select-Object TaskName, TaskPath, State, Description, Author |
Export-Csv -Path "C:\scheduled_tasks.csv" -NoTypeInformation -Encoding UTF8
# 如果您想要更详细的信息
Get-ScheduledTask | ForEach-Object {
$info = $_ | Get-ScheduledTaskInfo
[PSCustomObject]@{
TaskName = $_.TaskName
Path = $_.TaskPath
State = $_.State
Description = $_.Description
Author = $_.Author
LastRunTime = $info.LastRunTime
NextRunTime = $info.NextRunTime
LastTaskResult = $info.LastTaskResult
}
} | Export-Csv -Path "C:\scheduled_tasks_detailed.csv" -NoTypeInformation -Encoding UTF8
高级用法
筛选特定任务
# 查找运行状态的任务
Get-ScheduledTask | Where-Object {$_.State -eq "Ready"}
# 查找最近24小时运行过的任务
Get-ScheduledTask | ForEach-Object {
$info = $_ | Get-ScheduledTaskInfo
if ($info.LastRunTime -gt (Get-Date).AddHours(-24)) {
[PSCustomObject]@{
TaskName = $_.TaskName
LastRunTime = $info.LastRunTime
}
}
}
# 查找禁用的任务
Get-ScheduledTask | Where-Object {$_.State -eq "Disabled"}
监控任务计划变化
# 定期监控
while ($true) {
Clear-Host
Get-Date -Format "yyyy-MM-dd HH:mm:ss"
Get-ScheduledTask | Select-Object TaskName, State | Format-Table
Start-Sleep -Seconds 300 # 每5分钟刷新一次
}
使用方法
- PowerShell ISE:直接复制脚本运行
- 命令提示符:使用
schtasks命令 - 保存为脚本文件:
.ps1或.bat文件
注意事项
- 需要管理员权限才能查看所有任务计划
- 某些系统任务可能需要特定的权限
- 导出的XML文件可以用于还原任务计划
选择哪种方法取决于您的具体需求:
- 快速查看:使用
schtasks /Query - 详细分析:使用 PowerShell 的
Get-ScheduledTask - 批量处理:结合脚本自动化处理