windows - 获取有关 Windows 计划任务持续时间(执行时间)的信息

标签 windows powershell scheduled-tasks taskscheduler

我们有几台服务器,上面有数百个计划任务……找到合适的维护窗口变得很成问题。 是否有一些工具允许 Windows 任务计划程序事件的图形表示(如甘特图)?

除此之外,我一直在摆弄 Powershell 来自己实现该工具,使用 get-scheduledtaskget-scheduledtaskinfo,但是虽然它们确实提供了属性 LastRunTimeNextRunTime ,我找不到有关任务的duration 的信息。 我的意思是,如果我在上午 9 点开始一项任务,并且线程在 9 点 10 分返回,我确实在历史 gui 中看到它运行了 10 分钟..,但我无法使用 Powershell 获得相同的信息。 有什么提示吗? 谢谢!

最佳答案

您要查找的信息不会作为任务的属性持久保存。您需要从任务历史记录中提取它。 Action 的开始和结束分别用 ID 200 和 201 记录。

Get-WinEvent -FilterHashtable @{
    'LogName' = 'Microsoft-Windows-TaskScheduler/Operational'
    'ID'      = 200, 201
} | Group-Object ActivityID | ForEach-Object {
    $start = $_.Group |
             Where-Object { $_.Id -eq 200 } |
             Select-Object -Expand TimeCreated -First 1
    $end   = $_.Group |
             Where-Object { $_.Id -eq 201 } |
             Select-Object -Expand TimeCreated -First 1

    New-Object -Type PSObject -Property @{
        'TaskName'  = $_.Group[0].Properties[0].Value
        'StartTime' = $start
        'Duration'  = ($end - $start).TotalSeconds
    }
}

关于windows - 获取有关 Windows 计划任务持续时间(执行时间)的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53152238/

相关文章:

windows - windows部署的安装工具

powershell - 在 Powershell 中,如何获取本地 zip 文件的 Base64 编码内存流?

windows - 使用加载时动态链接指定 "back-up"加载路径?

Windows XP 或更高版本 Windows : How can I run a batch file in the background with no window displayed?

python - Windows 7上的“DNS server not authoritative for zone”错误

powershell - 使用Invoke-WmiMethod以特定用户的身份在远程计算机上运行可执行文件

linux - 从 Unix Shell 脚本调用 Powershell 脚本

java - 将 Spring 任务 XML 配置转换为代码配置

windows-7 - 如何使用命令提示符运行现有的 Windows 7 任务