パソコンの起動時刻≒出退勤時刻だったりすると、
翌日出勤して昨日の出退勤の時刻を記録するために昨日のパソコンの起動時間を知りたいということに。
(タイムカードみたいに出退勤時に必ず出退勤時刻を記録するトコロなら必要はないんですがね。。。)
そこで、イベントビューワというものからパソコンの起動時刻を知ることができるのですが、
いちいち起動するのは面倒です。
ワンラインのコマンドで知ることはできないものかと。
色々調べて試してみた結果、 コマンドプロンプト(というより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スクリプトを実行する - DOSプロンプトからコマンドによるPowerShellスクリプトの実行 : PowerShell Tips | iPentec
- 【 Get-EventLog 】コマンドレット――Windowsのイベントログを取得する:Windows PowerShell基本Tips(7) - @IT
- PCを起動した日時とシャットダウンした日時を確認する方法 Windows11
- Windows起動時間とシャットダウン時間を調べる方法 備忘録 | SEからの脱出日記
- Get-EventLog(イベントログを取得するコマンドレット)の使い方|ワイヴァンアイエス研究所ブログ
- PowerShellで日付を扱う - Qiita
- Get-EventLog (Microsoft.PowerShell.Management) - PowerShell | Microsoft Learn
- Get-Date (Microsoft.PowerShell.Utility) - PowerShell | Microsoft Learn
- Where-Object (Microsoft.PowerShell.Core) - PowerShell | Microsoft Learn
- 変数について - PowerShell | Microsoft Learn
ググれば、まぁ他にもやり方は出てきます。 まぁ、powershellコマンドを書く練習にはなったんで、よしとしようかな。
なんとなく、powershellよりコマンドラインを使ってしまいます。 コマンドプロンプトの方が馴染みあるというか、なんというか。
Windowsロゴキー+Rキーからの起動ならば、 コマンドプロンプト(cmd)の方が入力文字数が少なく、 起動が早いわけですが。
どっちの方が使っている人が多いのでしょうか?