2016-09-19 18 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でなく、その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 

出力は次のとおりです。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コマンドレットはあなたのステータスを提供結果らはLastRunTimeを取得するためにGet-ScheduledTaskInfoコマンドレットにパイプすることができます。

関連する問題