1
最終的には、スケジュールされたタスクが実行されている時間をカウントするスクリプトを作成しようとしています。予想よりも長く実行されると、データベースにエラー/警告を記録できます。schtasks/queryを使用してLastRunTimeを取得できますか?
私は現在、スケジュールされたタスクの実行を選択したいと思っています。私はその時間をカウントしたいと思います。そして最後の実行時間です(各ジョブの実行時間をカウントするために使用できるはずです)。私は最後のランタイムを見つけるために苦労しています。 私は現在持っている:
$tasks = schtasks /query /fo CSV | ConvertFrom-CSV
$Task = $tasks | Where-Object {($_.TaskName -like '*Backups*') -and ($_.Status -eq 'Running') }
$Task
私は同様にそれを行うための別の方法を試してみました - ComObjectでなく、その1からのステータスを取得する方法を考え出すことができませんでした:
を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