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

所属分类: 脚本专栏 / PowerShell 阅读数: 2035
收藏 0 赞 0 分享

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

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

$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)}  
 
#计算日期范围内的数值统计 
$counterInfo = $counterData | Foreach-Object {$_.CounterSamples} | Measure-Object -property CookedValue -Average -Maximum 
 
#哈希表存储结果数据 
$resultTable=@{} 
$resultTable."CPU 利用率——平均" = $counterInfo.Average 
$resultTable."CPU 利用率——最大" = $counterInfo.Maximum 
 
$resultTable 

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

$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网络蜘蛛解决乱码问题,需要的朋友可以参考下
收藏 0 赞 0 分享

Powershell 脚本数字签名实现方法

这篇文章主要介绍了Powershell 脚本数字签名实现方法,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell 未经数字签名 系统将不执行该脚本

这篇文章主要介绍了PowerShell 未经数字签名 系统将不执行该脚本的相关资料
收藏 0 赞 0 分享

powershell玩转sqlite数据库详细介绍

这篇文章主要为大家分享一下powershell玩转sqlite数据库的一些资料,内容非常详细,需要的朋友可以参考下
收藏 0 赞 0 分享

powershell玩转SQL SERVER所有版本的方法

微软发布了最新的powershell for sql server 2016命令行客户端库。文章介绍了与之相关的实用方法,需要的朋友可以参考下
收藏 0 赞 0 分享

原创powershell脚本小工具ctracert.ps1跟踪路由(win8以上系统)

这篇文章主要介绍了原创powershell脚本小工具ctracert.ps1跟踪路由(win8以上系统),需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell脚本 随机密码生成器(ps随机密码生成器)

这篇文章主要介绍了PowerShell脚本 随机密码生成器,需要的朋友可以参考下
收藏 0 赞 0 分享

PowerShell 语音计算器实现代码

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

通过DNS TXT记录执行powershell

这篇文章主要介绍了通过DNS TXT记录执行powershell的相关资料,以及nishang的脚本使用,需要的朋友可以参考下
收藏 0 赞 0 分享

如何防范PowerShell代码注入漏洞绕过受限语言模式

这篇文章主要介绍了如何防范PowerShell代码注入漏洞绕过受限语言模式的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多