ハードなソフトの話

アクセスカウンタ

zoom RSS 最後にPCの電源を切ったのはいつか?

<<   作成日時 : 2013/03/20 23:44   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

何時まで仕事してたっけ?

職場にタイムカードが無い。就業時間は自己申告である。Webシステムがあって開始と終了の時間を入力する。

開始時間は遅刻しなければ、一定だが、終了時間は変わる。残業をすることがある。ちょっとしたタイミングで終了時間の記入を忘れることがある。

仕事中はパソコンを使っている。電源は必ず切っている。それならば、最後に電源を切った時間が仕事の終了時間である。

Windowsのイベントビューアで電源を切った時間を調べる

Windowsの主な動作はイベントログに記録される。イベントログを記録するプログラムは、電源を入れてOSが開始してから終了するまで動作している。だから、電源を切った時間を知りたければ、イベントログを記録するプログラムが停止した時間を調べればいい。イベントビューアーでWindowsログのSystemを表示してソースがEventLogで「イベント ログ サービスが停止されました」というメッセージを調べればいい。たとえば、こんな感じ:

image

※Windows XPではEventLogが最後だがWindows 8/7/VistaではEventLogの後にもいろんなログが残る。

イベントビューアーを使うのは面倒だ。自動化できないか?

たった一つのログを取得するだけのためにイベントビューアーを起動したりするのは面倒である。だったら、スクリプトで自動化すればいい。

そんなわけでPowerShellでこんなスクリプトを書いてみた。

$event = get-eventlog -logname system -source eventlog -message "イベント*停止*" -newest 1
$msg = [String]( $event).TimeWritten
$wsh = new-object -comobject wscript.shell
$wsh.popup($msg,0,"Last Shutdown")

このスクリプトを動かすには、テキストファイルで last-shutdown.ps1というファイルを作り、適当な場所においておく。

実行する前にWindows PowerShellでスクリプトを実行できるように次のコマンドを実行する

Set-executionPolicy RemoteSigned

これでスクリプトの実行が許可される。(ついでにセキュリティーレベルの若干下がる)

後は、保存したlast-shutdown.ps1を右クリックして「」する。すると、次のようなメッセージボックスが表示される。

image

スクリプトの中で何をやってるの?

まず、最初の行:

$event = get-eventlog -logname system -source eventlog -message "イベント*停止*" -newest 1

イベントログのシステムログからソースが「eventlog」でメッセージに「イベント」で始まって「停止」を含むメッセージを抽出し、最新の1個を$eventに保存する。

2行目:

$msg = [String]( $event).TimeWritten

$eventに保存されたオブジェクトからTimeWritten(つまりログが書き込まれた時間)を取り出して、$msgに保存する。

3行目:

$wsh = new-object -comobject wscript.shell

VBScriptやJScriptでお馴染みのWindows Scripting Host を読み込んで$wshに保存する。

4行目:

$wsh.popup($msg,0,"Last Shutdown")

$wshを使って$msgの内容をメッセージボックスで表示する。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
最後にPCの電源を切ったのはいつか? ハードなソフトの話/BIGLOBEウェブリブログ
文字サイズ:       閉じる