系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > 脚本中心 > PowerShell > 详细页面

PowerShell 读取性能计数器二进制文件(.blg)记录并汇总计算

时间:2020-01-28来源:电脑系统城作者:电脑系统城

由于监控及报告需要,要统计性能计数器每天数值情况,确认数据库服务器的运行状况。若打开计数器填写,比较麻烦,现在统计用 powershell 来读取计数器的值。

第一阶段:Powershell 读取计数器文件并统计其中一个计数器的值


 
  1. $startDate = (Get-Date).AddDays(-1).Date
  2. $endDate = (Get-Date).Date
  3. $perfPath = "D:\DataFiles\PERFMON\MSSQL_PERFMON_08240904.blg"
  4.  
  5. #读取文件中的计数器名称
  6. $counterList = Import-Counter -Path $perfPath
  7. $countersNameList = $counterList[0].countersamples | % {$_.path}
  8.  
  9. #筛选指定计数器和时间重新导入PS
  10. $counter = $countersNameList -like '*Processor Time*'
  11. $counterData = Import-Counter -Path $perfPath -Counter $counter | Where-Object -FilterScript {($_.Timestamp -ge $startDate) -and ($_.Timestamp -lt $endDate)}
  12.  
  13. #计算日期范围内的数值统计
  14. $counterInfo = $counterData | Foreach-Object {$_.CounterSamples} | Measure-Object -property CookedValue -Average -Maximum
  15.  
  16. #哈希表存储结果数据
  17. $resultTable=@{}
  18. $resultTable."CPU 利用率——平均" = $counterInfo.Average
  19. $resultTable."CPU 利用率——最大" = $counterInfo.Maximum
  20.  
  21. $resultTable

第二阶段:批量统计文件中的所有计数器并导出到文件中


 
  1. $startDate = (Get-Date).AddDays(-1).Date
  2. $endDate = (Get-Date).Date
  3. $perfPath = "D:\360Downloads\*.blg"
  4.  
  5. #哈希表存储结果数据
  6. $resultTable=@{}
  7.  
  8. #导入指定时间的所有计数器信息
  9. $counterData = Import-Counter -Path $perfPath | Where-Object -FilterScript{($_.Timestamp -ge $startDate) -and ($_.Timestamp -lt $endDate)}
  10.  
  11. #所有的计数器名字
  12. $countersNameList = $counterData[0].countersamples | % {$_.Path}
  13.  
  14. #遍历每个计数器,将计算结果存储到哈希表中
  15. foreach($counterName in $countersNameList)
  16. {
  17. #$counterName = "\\hzc\system\threads"
  18. $counterDataOne = $counterData | Foreach-Object {$_.CounterSamples} | Where {$_.Path-like $counterName}
  19. $counterInfo = $counterDataOne | Measure-Object CookedValue -Average -Minimum -Maximum
  20. $resultTable.$($counterName+" :平均值") = $counterInfo.Average
  21. $resultTable.$($counterName+" :最小值") = $counterInfo.Minimum
  22. $resultTable.$($counterName+" :最大值") = $counterInfo.Maximum
  23. }
  24.  
  25. #$resultTable.GetEnumerator() | sort Name | Format-Table -Auto
  26. #几种方法导出到文件
  27. $resultTable.GetEnumerator() | sort Name | Format-Table -Auto | Out-File"D:\360Downloads\PerfmonCounter.txt"
  28. $resultTable.GetEnumerator() | sort Name | Export-Csv -Path"D:\360Downloads\PerfmonCounter.txt" -Encoding "unicode" -Force
  29. $resultTable.GetEnumerator() | sort Name | Format-List | Export-Csv -Path"D:\360Downloads\PerfmonCounter.xlsx" -Encoding "unicode" -Force

分享到:

相关信息

  • Powershell 脚本数字签名实现方法

    脚本很容易被冒名顶替或者更改,因为它们是由纯文本构成的。数字签名为脚本提供了更高的安全性,因为它能确定脚本和脚本的编辑者的唯一性,并且不能被更改。作为脚本的发布者,你能确定你的脚本没有被恶意篡改。即使专家也无...

    2020-01-28

  • PowerShell 语音计算器实现代码

    带中文发音功能的计算器程序,支持鼠标和小键盘输入,支持多种数值转人民币的相关资料...

    2020-01-28

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载