• ベストアンサー

PC off時のログ記録

pcの電源を断した時の日時を取得したいのですが、 今、バッチファイルを作成しそこに、dataとtime、shutdownコマンドを記述しまして日時は取得できます。win2000では、shutdownが無いみたいで、電源を切れません。 ただ、バッチファイルをダブルクリックし忘れてしまいますので、記録できないことがよくあります。 tasksフォルダに電源offは登録することもできませんし、 なんとか自動化できないでしょうか? 管理ツールにイベントビューアというのがあるのですが、 ちょっと利用しづらいのです。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Raistlin
  • ベストアンサー率63% (65/102)
回答No.1

クリックし忘れ防止ということを考えると、やはりイベントログを活用すべきなのかと思います。 標準のイベントビューアでも、イベントID(6006でOK?)でフィルタすればそれなりにいけますが、この操作さえも面倒だということであれば、イベントログから情報を切り出して保存するスクリプトを運用してはいかがでしょう。 http://www.microsoft.com/japan/technet/scriptcenter/scripts/logs/eventlog/default.mspx のコードを切り貼りして作ったコードを最後に載せておきます。 なお蛇足かもしれませんが、電源断はリンク先の情報使えませんかね。 http://homepage2.nifty.com/winfaq/w2k/boot.html#1001 ++++参考コードここから++++ Const ForAppending = 2 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objTextFile = objFSO.OpenTextFile _ ("c:\temp\shutlog.txt", ForAppending, True) strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colLoggedEvents = objWMIService.ExecQuery _ ("Select * from Win32_NTLogEvent Where Logfile = 'System' and " _ & "EventCode = '6006'") For Each objEvent in colLoggedEvents objTextFile.Write(WMIDateStringToDate(objEvent.TimeWritten) & vbTab & _ objEvent.Message) Next Wscript.Echo "ログの書き出しが終了しました" objTextFile.Close Function WMIDateStringToDate(strUTCTime) WMIDateStringToDate = CDate(Mid(strUTCTime, 5, 2) & "/" & _ Mid(strUTCTime, 7, 2) & "/" & Left(strUTCTime, 4) _ & " " & Mid (strUTCTime, 9, 2) & ":" & _ Mid(strUTCTime, 11, 2) & ":" & Mid(strUTCTime, _ 13, 2)) End Function

uran-1007
質問者

お礼

色々と盛りだくさんの情報ありがとう御座います。 参考にさせて頂きます!!

関連するQ&A