ってことで、下のようなsample.txtがあったとして・・
こんな感じで出力させます。
というわけで以下、ソース
<# .SYNOPSIS ログを視覚化 .DESCRIPTION Loginを時間ごとにデータから取得し、#でグラフを作る .LINK .NOTES グラフを作るおともに。 .EXAMPLE #> function get-logmater { param ($logdata) $result=0..23 | % { $tlogin=$null $tlogout=$null $tLogin= $logdata | Select-String -Pattern "^.* $_\:.*Login$" $tLogout= $logdata | Select-String -Pattern "^.* $_\:.*Logout$" if (($tlogin -ne $null) -or ($tlogout -ne $null)){ $output = New-Object psobject $output | Add-Member noteproperty time $_ $output | Add-Member noteproperty login $tLogin $output | Add-Member noteproperty logout $tLogout $output } } function get-count { param($source) if($source.count -eq $null) { write-output 0 }else{ $source.count } } $logincount=0..$($result.count-1) | % { get-count @($result[$_].login) } $logoutcount=0..$($result.count-1) | % { get-count @($result[$_].logout) } $a=$logincount | Measure-Object -Maximum -Average $b=$logoutcount | Measure-Object -Maximum -Average 0..$($logincount.count-1) | % { "{0:00}時 In {1:00}回 {2}" -F $($result[$_].time),$($logincount[$_]),$("#"*$($logincount[$_]/2)) "{0:00}時 Out {1:00}回 {2}" -F $($result[$_].time),$($logoutcount[$_]),$("*"*$($logoutcount[$_]/2)) } write-output "【 Login MAX $($a.maximum) 回/時 】【Logoff MAX $($b.maximum) 回/時】" } function get-check { param($ckdata) if(-not $ckdata) { Write-Output "データはありません" }else { get-logmater $ckdata } } Write-Output "ログ結果" #$tday=$(Get-Date).adddays(-1).tostring("yyyy/MM/dd") #$data=gc C:\Users\buso\Desktop\wdirary\aa\sample.csv | ? { $_ -like "$tday*" } $data=gc C:\Users\buso\Desktop\wdirary\aa\sample.txt get-check $dataそのまま数をメーターに反映させると、メーターが長くなりすぎるので、1/2の長さとなるよう調整。
今回は、sample.txtだけを読み込みましたが、使い方によっては複数のファイルを読み込んでアクセスログの合算をメーター化させることも可能です。
スポンサーリンク