タスクスケジューラの実行履歴(ログ)を確認するには?

Windows全般
スポンサーリンク

タスクスケジューラの実行履歴(タスクの実行日時や成功・失敗の記録など)は、デフォルトでは記録されません。これを記録するには、①イベントビューアーで操作するか、②PowerShellのコマンドを実行する、のどちらかを行い該当のログを有効化する必要があります。これを行うと、タスクスケジューラのプロパティ内の「履歴」タブからタスクの履歴が確認できるようになります。記事内で詳しく操作方法を解説します。

課題:タスクスケジューラの実行履歴が見たい

Windowsの標準ツール「タスクスケジューラ」で設定したタスクが、いつ実行されたか、エラーなどで実行失敗したかどうかの履歴(ログ)を確認したいです。

タスクスケジューラで、タスクのプロパティで履歴が確認できるようですが、「履歴(無効)」と表示されていて、何も表示されません

解決策:履歴を有効にする

タスクスケジューラの実行履歴は、デフォルトで無効になっており、そのままでは記録されません。そのため、以下のいずれかの方法で履歴を有効化する必要があります。

有効化する方法(どちらか1つ)
  • 方法① イベントビューアーの画面から設定
  • 方法② PowerShellコマンドで有効化

どちらか1つでOKです。操作が単純なのは①ですが、PowerShellコマンド操作に慣れている人は②の方が手早く終わります。

方法① イベントビューアーの画面から設定

まず、イベントビューアーを起動します(起動方法)。

下図のように、左のツリーで[アプリケーションとサービスログ]>[Microsoft]>[Windows]>[TaskScheduler]とたどり、[Operational] を右クリックし「ログの有効化」を選択します。

これだけでOKです。

方法② PowerShellコマンドで有効化

まずはPowerShell プロンプトを「管理者として実行」して起動します(起動方法)。なお、Windows 11の場合は、PowerShell プロンプトの代わりに「Windows ターミナル」も使えます。

PowerShell プロンプトが文字化けする場合は、こちらの記事を参照して下さい。

次に、下のコマンドを3行コピーします。

$log = Get-WinEvent -ListLog Microsoft-Windows-TaskScheduler/Operational
$log.IsEnabled = $true
$log.SaveChanges()

PowerShell プロンプトで、コピーした3行を「Ctrl + V」キーで貼り付け、実行します。改行が含まれると自動的に実行されるため、3行まとめて貼り付けてOKです。このとき、3行目も漏れなく実行するよう注意して下さい。具体的には、下図のように3行目の次行に「>」が表示されていればOKです。

上図のように、エラーが表示されなければ、これでログの有効化はOKです。

PowerShellプロンプト(もしくはWindows ターミナル)を「管理者として実行」せず、通常通り起動した場合は、次のエラーになります。

有効化されたタスクの履歴を確認するには

前項の方法①、②のいずれかを実施してはじめて、タスクの実行履歴(イベントログ)が記録されるようになります。確認方法は下記に説明しますが、次にタスクが実行されるまで履歴は空のままです。

ではタスクスケジューラで実行履歴を確認してみましょう。その前に、タスクスケジューラを起動しっぱなしの場合、一度終了して開きなおすか、「最新の情報に更新」をクリックしておきます。下図のように対象のタスクを選択し、下ペインを「履歴」タブに切り替えると実行履歴が表示されます

タスクスケジューラは、画面情報がなかなか更新されません。随時「最新の情報に更新」をクリック(または「F5」キー押下)して下さい。

補足:「本当の処理結果」は別途確認が必要かも

タスクスケジューラの履歴で「タスクが完了しました」と記録されていたとしても、必ずしも意図としたとおり動作が行われたとは限りません。例えば、「タスクで定義したバッチファイルは正常に開始したが、処理が失敗していた」というケースもあり得ます(必ずしも0x1が帰るとは限らない)。

真に「自動処理が正しく行われたかどうか」を確認するには、呼び出したプログラムの実行結果や、そちらのログを確認する必要があるでしょう。

フィードバック

フィードバック

コメント

タイトルとURLをコピーしました