답변
$EventFilter = @{
LogName = 'Microsoft-Windows-TaskScheduler/Operational'
Id = 100
StartTime = [datetime]::Now.AddDays(-1)
}
# PropertySelector for the Correlation id (the InstanceId) and task name
[string[]]$PropertyQueries = @(
'Event/EventData/Data[@Name="InstanceId"]'
'Event/EventData/Data[@Name="TaskName"]'
)
$PropertySelector = New-Object System.Diagnostics.Eventing.Reader.EventLogPropertySelector @(,$PropertyQueries)
# Loop through the start events
$TaskInvocations = foreach($StartEvent in Get-WinEvent -FilterHashtable $EventFilter){
# Grab the InstanceId and Task Name from the start event
$InstanceId,$TaskName = $StartEvent.GetPropertyValues($PropertySelector)
# Create custom object with the name and start event, query end event by InstanceId
[pscustomobject]@{
TaskName = $TaskName
StartTime = $StartEvent.TimeCreated
EndTime = $(Get-WinEvent -FilterXPath "*[System[(EventID=102)] and EventData[Data[@Name=""InstanceId""] and Data=""{$InstanceId}""]]" -LogName 'Microsoft-Windows-TaskScheduler/Operational' -ErrorAction SilentlyContinue).TimeCreated
}
}
$TaskInvocations
참조 링크 PowerShell을 사용 역사에서 taskscheduler의 수준을 얻을 수있는 방법 : TaskScheduler History
는 희망이 도움을.
그게 효과가 있습니다. 작업의 EVENT ID를 작업 기록으로 가져 오는 것을 도와 줄 수 있습니까? –
@bhargavporapu : 이미 ID를 100으로 언급했습니다. –
@bhargavporapu :이 모든 것에 대해 스스로 시도해야합니다. SO는 스크립트 전달 서비스가 아니며, ppl이 막히게되고 방향을 파악하려고하는 도움말 포럼에 더 가깝습니다. 나는 너의 편에서 어떤 노력도 보지 않고있다. –
짝을 시도한 것은 무엇입니까? 당신은'$ service = new-object -ComObject ("Schedule.Service");를 사용할 수있다. $ service.Connect(); $ rootFolder = $ service.GetFolder ("\"); ' –