Вы можете сделать что-то вроде следующего:
$TaskName = '\Task Name'
$StartTime = (Get-Date).Adddays(-7)
$EndTime = Get-Date
$filter = @{ LogName = 'Microsoft-Windows-TaskScheduler/Operational'
ID = 129,102
StartTime = $StartTime
EndTime = $EndTime
Data = $TaskName
}
Get-WinEvent -FilterHashTable $filter | Select-Object TimeCreated,@{n='Action';e={$_.TaskDisplayName}}
Объяснение:
Для $TaskName
необходимо ввести имя задачи точно так, как оно будет показано в (Get-WinEvent).Properties
. Вы также можете увидеть это точное имя в сообщениях истории задач. Скорее всего, в названии будет указана обратная косая черта sh.
Вы можете установить $StartTime
и $EndTime
так, как вам нравится. Наличие временного интервала ускоряет время поиска запроса.
$filter
- это место, где происходит волхв c. В конечном итоге он будет введен в параметр -FilterHashTable
. Поскольку ключ ID
может принимать массив [int]
, мы можем просто разделить значения запятыми. 129
- это Created Task Process
. 102
- это Task Completed
. Data
не принимает подстановочные знаки, поэтому мы должны быть точными с именем задачи, как это будет показано в свойстве System.Diagnostics.Eventing.Reader.EventProperty
. Если вы не используете Data
, вам придется полагаться на Where-Object
для дальнейшей фильтрации данных вашей задачи по имени задачи, что будет значительно медленнее.