1
결국 예약 된 작업이 실행되는 시간을 계산하는 스크립트를 작성하려고합니다. 따라서 예상보다 오래 실행되는 경우 데이터베이스에 오류/경고를 기록 할 수 있습니다.schtasks/query를 사용하여 LastRunTime을 가져올 수 있습니까?
현재 내가 예약 한 작업을 선택하고 실행 시간을 계산하고 싶습니다. 그리고 마지막 런타임 (각 작업이 얼마나 오래 실행되었는지 계산할 수 있어야합니다)). 나는 마지막 실행 시간을 발견하기 위해 고투하고있다. 내가 현재 가지고 :
출력$tasks = schtasks /query /fo CSV | ConvertFrom-CSV
$Task = $tasks | Where-Object {($_.TaskName -like '*Backups*') -and ($_.Status -eq 'Running') }
$Task
내가뿐만 아니라 그 일을 다른 방법으로 시도 -하여 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