Получить информацию о продолжительности запланированных задач Windows (время выполнения) - PullRequest
0 голосов
/ 05 ноября 2018

У нас есть пара серверов с сотнями запланированных задач на них ... и становится проблематичным найти правильное окно обслуживания. Существует ли какой-либо инструмент, который позволяет графически представлять (как в графе Ганта) события планировщика заданий Windows?

За исключением этого, я возился с Powershell, чтобы самостоятельно реализовать инструмент, используя get-scheduledtask и get-scheduledtaskinfo, но, хотя они предоставляют свойства LastRunTime и NextRunTime, я не могу найти информацию о длительность задания. Я имею в виду, что если я запустил задачу в 9 утра, а поток вернулся в 9.10, я вижу в истории историю, что она выполнялась в течение 10 минут ..., но я не могу получить ту же информацию с помощью Powershell. Любой намек? Спасибо!

1 Ответ

0 голосов
/ 05 ноября 2018

Информация, которую вы ищете, не сохраняется как свойство задачи. Вам нужно извлечь его из истории задач. Начало и конец действия регистрируются с 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
    }
}
...