PCの稼働時間集計
Warder of workaholic

日々のパソコンの稼働時間を調べるためのツールを作成しました。
Windows10の環境下での実行を前提としています。
セキュリティーに配慮し、外部からはプログラムツールを一切導入せず、WindowsとBrowser内の機能だけを使って実現しています。
そのため、操作が少し煩雑になっていますが、ご容赦ください。

解説

Windows には、OSやアプリケーション・ソフトの動作を記録・表示する「イベント・ログ」という機能があります。
この中には、起動時刻、ログオン時刻、ログオフ時刻、停止時刻が記録されています。
ID イベント
6005 起動(ブート)
6006 停止(シャットダウン)
6008 異常終了(正常ではない終了)
7001 ログオン(サービススタート:Windows10高速起動時)
7002 ログオフ(サービスストップ:Windows10高速起動時)

これらの稼働履歴を取り出すPowerShellのスクリプトを作成しました。
しかし、取り出したデータは、これらの情報が時系列に並んでいるだけなので、 開始時刻と終了時刻を抽出し、稼働時間を計算して、 表計算ソフトで読み込める形式に変換するWebアプリケーションをJavaScriptで作成しました。

注意点

今回、取り出す稼働履歴ですが、どれぐらい過去まで保存されているのでしょうか?
いろいろ調べたところ、Windowsがインストールされた日から保存されているようですが、大きなアップデートがあるとリセットされてしまうようです。
大きなアップデートを行う前には、必ず稼働履歴のバックアップを取っておく必要がありますね。
アップデートのあった日付の確認は以下の方法で行って下さい。
  1. Windows 10のスタートメニューから、以下の手順をたどり、システムの詳細情報を表示して下さい。
  2. 詳細情報の中の「Windowsの仕様」という項目を探して下さい。
  3. この中の「インストール日」が、アップデートのあった日です。
    ./images/InstallDay.png

稼働履歴データの取得

スクリプトの入手

以下のスクリプトをダウンロードし、作業用のディレクトリにダウンロードして下さい。
dumpWorkLog.ps1(3,460 byte)
組織のセキュリティ規約によっては、このようなスクリプトのダウンロードが禁止されている場合があります。
その場合は、以下のリンク先に書いてある手順に従って、dumpWorkLog.ps1を取り込んで下さい。
稼働履歴データ収集スクリプトの取得方法

稼働履歴の読み出し

前述のdumpWorkLog.ps1をマウスで選択し、右ボタンをクリックし 表示されたメニューから[PowerShellで実行]を選択して下さい。 ./images/RunPowerShell.png
新しいウインドウが表示され、データの収集が開始されます。
以下のメッセージが表示された場合は、”A”を入力してEnterキーを押して実行を継続して下さい。
実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"):A
./images/PowerShellPolicy.png
30秒ほど待つと、先ほどの画面が消え代わりにメモ帳が起動して、パソコンの稼働履歴のデータが表示されます。
この内容は、OperationalStatus+年月日時分秒.csvというファイルに保存されています。
./images/notepad.png
この内容を全選択して、クリップボードにコピーして下さい。
./images/notepad_SelectAll.png ./images/notepad_Copy.png
そのクリップボードの内容を、以下で解説するJavaScriptのWebアプリケーションに貼り付けてご利用下さい。

稼働時刻の抽出と稼働時間の計算

使用する目的によって、稼働時間の方法は異なると思います。
そこで、目的に応じて、稼働時間を集計する3種類のWebアプリケーションを作りました。
  1. 1日の稼働時間の集計
  2. その日、最初に電源を入れてから、最後に電源を切るまでを1日の稼働時間として集計します。
    深夜0時を過ぎた場合は、それ以降で、電源が切られた時刻までの時間を集計します。
    一日に何度かパソコンの電源を入れたり切ったりしても、集計するのは、最後に電源を切った時刻です。
    [1日の稼働時間の集計]に進む。
  3. 起動時間の集計
  4. パソコンの電源を入れてから切るまでを起動時間として集計します。
    [起動時間の集計]に進む。
  5. 作業時間の集計
  6. ログインからログオフまでを作業時間として集計します。
    [作業時間の集計]に進む。
./images/OneDay.png

1. 1日の稼働時間の集計

./images/PowerOnOff.png

2. 起動時間の集計

./images/LogOnOff.png

3. 作業時間の集計

[戻る]