2017-11-27 23 views

답변

1
$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을 enter image description here 사용 역사에서 taskscheduler의 수준을 얻을 수있는 방법 : TaskScheduler History

는 희망이 도움을.

+0

그게 효과가 있습니다. 작업의 EVENT ID를 작업 기록으로 가져 오는 것을 도와 줄 수 있습니까? –

+0

@bhargavporapu : 이미 ID를 100으로 언급했습니다. –

+0

@bhargavporapu :이 모든 것에 대해 스스로 시도해야합니다. SO는 스크립트 전달 서비스가 아니며, ppl이 막히게되고 방향을 파악하려고하는 도움말 포럼에 더 가깝습니다. 나는 너의 편에서 어떤 노력도 보지 않고있다. –