PowerShell 讀取性能計數器二進制文件(.blg)記錄并匯總計算
更新時間:2016年11月28日 23:11:56 投稿:mdxy-dxy
由于監(jiān)控及報告需要,要統(tǒng)計性能計數器每天數值情況,確認數據庫服務器的運行狀況。若打開計數器填寫,比較麻煩,現在統(tǒng)計用 powershell 來讀取計數器的值
由于監(jiān)控及報告需要,要統(tǒng)計性能計數器每天數值情況,確認數據庫服務器的運行狀況。若打開計數器填寫,比較麻煩,現在統(tǒng)計用 powershell 來讀取計數器的值。
第一階段:Powershell 讀取計數器文件并統(tǒng)計其中一個計數器的值
$startDate = (Get-Date).AddDays(-1).Date $endDate = (Get-Date).Date $perfPath = "D:\DataFiles\PERFMON\MSSQL_PERFMON_08240904.blg" #讀取文件中的計數器名稱 $counterList = Import-Counter -Path $perfPath $countersNameList = $counterList[0].countersamples | % {$_.path} #篩選指定計數器和時間重新導入PS $counter = $countersNameList -like '*Processor Time*' $counterData = Import-Counter -Path $perfPath -Counter $counter | Where-Object -FilterScript {($_.Timestamp -ge $startDate) -and ($_.Timestamp -lt $endDate)} #計算日期范圍內的數值統(tǒng)計 $counterInfo = $counterData | Foreach-Object {$_.CounterSamples} | Measure-Object -property CookedValue -Average -Maximum #哈希表存儲結果數據 $resultTable=@{} $resultTable."CPU 利用率——平均" = $counterInfo.Average $resultTable."CPU 利用率——最大" = $counterInfo.Maximum $resultTable
第二階段:批量統(tǒng)計文件中的所有計數器并導出到文件中
$startDate = (Get-Date).AddDays(-1).Date $endDate = (Get-Date).Date $perfPath = "D:\360Downloads\*.blg" #哈希表存儲結果數據 $resultTable=@{} #導入指定時間的所有計數器信息 $counterData = Import-Counter -Path $perfPath | Where-Object -FilterScript {($_.Timestamp -ge $startDate) -and ($_.Timestamp -lt $endDate)} #所有的計數器名字 $countersNameList = $counterData[0].countersamples | % {$_.Path} #遍歷每個計數器,將計算結果存儲到哈希表中 foreach($counterName in $countersNameList) { #$counterName = "\\hzc\system\threads" $counterDataOne = $counterData | Foreach-Object {$_.CounterSamples} | Where {$_.Path -like $counterName} $counterInfo = $counterDataOne | Measure-Object CookedValue -Average -Minimum -Maximum $resultTable.$($counterName+" :平均值") = $counterInfo.Average $resultTable.$($counterName+" :最小值") = $counterInfo.Minimum $resultTable.$($counterName+" :最大值") = $counterInfo.Maximum } #$resultTable.GetEnumerator() | sort Name | Format-Table -Auto #幾種方法導出到文件 $resultTable.GetEnumerator() | sort Name | Format-Table -Auto | Out-File "D:\360Downloads\PerfmonCounter.txt" $resultTable.GetEnumerator() | sort Name | Export-Csv -Path "D:\360Downloads\PerfmonCounter.txt" -Encoding "unicode" -Force $resultTable.GetEnumerator() | sort Name | Format-List | Export-Csv -Path "D:\360Downloads\PerfmonCounter.xlsx" -Encoding "unicode" -Force
相關文章
PowerShell查看本機文件關聯程序和默認打開程序的方法
這篇文章主要介紹了PowerShell查看本機文件關聯程序和默認打開程序的方法,本文給出了查看方法,同時給出了一份讀取結果,需要的朋友可以參考下2015-06-06探索PowerShell (四) PowerShell的對象、格式與參數
本節(jié)將要給大家介紹一下PowerShell下的對象,基本格式以及參數。依然屬于PowerShell的基礎2012-12-12