怎么用脚本获取任务计划

wen 实用脚本 2

本文目录导读:

怎么用脚本获取任务计划

  1. PowerShell 脚本方法
  2. 命令行方法(cmd)
  3. 完整脚本示例
  4. 高级用法
  5. 使用方法
  6. 注意事项

我来介绍几种获取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分钟刷新一次
}

使用方法

  1. PowerShell ISE:直接复制脚本运行
  2. 命令提示符:使用 schtasks 命令
  3. 保存为脚本文件.ps1.bat 文件

注意事项

  • 需要管理员权限才能查看所有任务计划
  • 某些系统任务可能需要特定的权限
  • 导出的XML文件可以用于还原任务计划

选择哪种方法取决于您的具体需求:

  • 快速查看:使用 schtasks /Query
  • 详细分析:使用 PowerShell 的 Get-ScheduledTask
  • 批量处理:结合脚本自动化处理

抱歉,评论功能暂时关闭!