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