月末の勤怠書くときに、自分の勤務時間のおおよそが知りたいが為に
書いたスクリプトです。
年月指定ができるように修正しました。
今月いつ休んだんだっけ?
っと悩む事が多い人(自分含む)には、便利だと思います。
以下2点注意
- Eventログの件数が多すぎるとかなり時間がかかりますので実行時はご注意ください。
- 日をまたいで仕事をしているような方には、まったく効果がありません。
$targetMonth = (get-date).tostring("yyyyMM")
#今月以外の特定年月が見い場合は次行にある頭の#を削除して、年月を変更を指定してください
#$targetMonth = "202009"
get-eventlog system |
? {$_.timegenerated.date.tostring("yyyyMM") -eq $targetMonth } |
sort timegenerated |
group {$_.timegenerated.date } |
%{ $_.group | select -first 1 -last 1 | group | select group } |
%{ write-host ("{0:yyyy/MM/dd} : {0:HH:mm:ss} - {1:HH:mm:ss}" -F $_.group[0].timegenerated,$_.group[1].timegenerated) }
このスクリプトのポイントは、
group {$_.timegenerated.date } |
%{ $_.group | select -first 1 -last 1 | group | select group }
の部分。
group {$_.timegenerated.date }
で日ごとのログに集約して
$_.group | select -first 1 -last 1
そのグループから、最初と最後を抜き出して
group | select group
無条件に結果をまとめて、その結果をとる(first,last2行を1行にする)