2016-09-19 4 views
1

결국 예약 된 작업이 실행되는 시간을 계산하는 스크립트를 작성하려고합니다. 따라서 예상보다 오래 실행되는 경우 데이터베이스에 오류/경고를 기록 할 수 있습니다.schtasks/query를 사용하여 LastRunTime을 가져올 수 있습니까?

현재 내가 예약 한 작업을 선택하고 실행 시간을 계산하고 싶습니다. 그리고 마지막 런타임 (각 작업이 얼마나 오래 실행되었는지 계산할 수 있어야합니다)). 나는 마지막 실행 시간을 발견하기 위해 고투하고있다. 내가 현재 가지고 :

출력
$tasks = schtasks /query /fo CSV | ConvertFrom-CSV 
$Task = $tasks | Where-Object {($_.TaskName -like '*Backups*') -and ($_.Status -eq 'Running') } 

$Task 

: enter image description here

내가뿐만 아니라 그 일을 다른 방법으로 시도 -하여 ComObject로를하지만 하나에서 상태를 확인하는 방법을 작동하지 않을 수 있습니다 :

function getTasks($path) { 
$out = @() 

# Get root tasks 
$schedule.GetFolder($path).GetTasks(0) | % { 
    $xml = [xml]$_.xml 
    $out += New-Object psobject -Property @{ 
     "Name" = $_.Name 
     "Path" = $_.Path 
     "LastRunTime" = $_.LastRunTime 
     "Status" = $_.Status 
     "Actions" = ($xml.Task.Actions.Exec | % { "$($_.Command) $($_.Arguments)" }) -join "`n" 
    } 
} 

# Get tasks from subfolders 
$schedule.GetFolder($path).GetFolders(0) | % { 
    $out += getTasks($_.Path) 
} 

#Output 
$out 
} 

$tasks = @() 

$schedule = New-Object -ComObject "Schedule.Service" 
$schedule.Connect() 

$tasks += getTasks("\DBA\Backups") 

[System.Runtime.Interopservices.Marshal]::ReleaseComObject($schedule) | Out-Null 
Remove-Variable schedule 

$tasks 

출력은 다음과 같습니다 enter image description here

답변

0

Get-ScheduledTask cmdl있다

Get-ScheduledTask | select -first 1 | Get-ScheduledTaskInfo 

예 출력 :

LastRunTime  : 19.09.2016 09:07:07 
LastTaskResult  : 0 
NextRunTime  : 20.09.2016 09:07:07 
NumberOfMissedRuns : 0 
TaskName   : GoogleUpdateTaskMachineCore 
TaskPath   : \ 
PSComputerName  : 

Get-ScheduledTask cmdlet을 당신에게 상태를 제공 결과 등은 LastRunTime를 검색 할 Get-ScheduledTaskInfo cmdlet으로 파이프 할 수 있습니다.