芋の独り言

当ブログへのアクセスは当ブログのプライバシーポリシーに同意したものとみなします.

パソコンの起動時刻を知るコマンド(Windows)

パソコンの起動時刻≒出退勤時刻だったりすると、 翌日出勤して昨日の出退勤の時刻を記録するために昨日のパソコンの起動時間を知りたいということに。
(タイムカードみたいに出退勤時に必ず出退勤時刻を記録するトコロなら必要はないんですがね。。。)

そこで、イベントビューワというものからパソコンの起動時刻を知ることができるのですが、 いちいち起動するのは面倒です。 ワンラインのコマンドで知ることはできないものかと。

色々調べて試してみた結果、 コマンドプロンプト(というよりPowershell)で昨日のパソコンの起動時刻と終了時刻を知るコマンド(ワンライン)が次になります。


powershell -Command "$yesterday = (Get-Date).AddDays(-1).ToString('yyyy/MM/dd'); Get-EventLog System -After $yesterday | Where-Object {$_.InstanceID -Match '^700(1|2)$'}"

ワンラインで書けましたが、ものすごく長くなってしまいました。。。

ただし、上記コマンドでは、月曜に金曜の出退勤を書く場合のような、前の出勤日が休日を挟んでいる場合は 前の出勤日のパソコンの起動時刻を取得できないことになります。
そこで、改めて考え、以下のようになりました。


powershell -Command "$yesterday = (Get-Date).AddDays(-1).ToString('yyyy/MM/dd'); Get-EventLog System -Before $yesterday -InstanceId 7001,7002 -Newest 2"

Where-Object正規表現を使ってフィルタリングしていたけど、要らなかったな。。。 -InstanceIdに指定すればいいだけだった。。。
-Afterでなく-Beforeに変更し、昨日までのイベントを取得する形式に変更。 そして、-Newestで表示する件数を制限。 2~3表示しておけば十分かと思いますね。



参考サイト


ググれば、まぁ他にもやり方は出てきます。 まぁ、powershellコマンドを書く練習にはなったんで、よしとしようかな。

qiita.com



なんとなく、powershellよりコマンドラインを使ってしまいます。 コマンドプロンプトの方が馴染みあるというか、なんというか。

Windowsロゴキー+Rキーからの起動ならば、 コマンドプロンプト(cmd)の方が入力文字数が少なく、 起動が早いわけですが。

どっちの方が使っている人が多いのでしょうか?