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

由于监控及报告需要,要统计性能计数器每天数值情况,确认数据库服务器的运行状况。若打开计数器填写,比较麻烦,现在统计用 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 

(0)

相关推荐

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

    由于监控及报告需要,要统计性能计数器每天数值情况,确认数据库服务器的运行状况.若打开计数器填写,比较麻烦,现在统计用 powershell 来读取计数器的值. 第一阶段:Powershell 读取计数器文件并统计其中一个计数器的值 $startDate = (Get-Date).AddDays(-1).Date $endDate = (Get-Date).Date $perfPath = "D:\DataFiles\PERFMON\MSSQL_PERFMON_08240904.blg"

  • Python读取英文文件并记录每个单词出现次数后降序输出示例

    本文实例讲述了Python读取英文文件并记录每个单词出现次数后降序输出.分享给大家供大家参考,具体如下: 对文中出现的句号,逗号和感叹号做了相应的处理 sorted排序函数用法: 按照value值降序排列: sorted(dict.items(),key=lambda k:k[1],reverse=True) 按照value值升序排序: sorted(dict.items(),key=lambda k:k[1],reverse=False) 或者 sorted(dict.items(),key=

  • PHP实现读取Excel文件的记录(二)

    <PHP实现读取Excel文件的记录(一)> 中有在PHP中读取Excel的例子,有些麻烦,因为必须要加载很多的文件. 应该有ODBC的读取方法,还没有试,今天的方法简单了很多,只需要加载两个文件即可,这两个文件(OLERead.php.reader.php)我找了好长时间才找到,放在后面. 试验成功的代码: <?php require_once 'reader.php';//加载Reader $excelData = new Spreadsheet_Excel_Reader();//创

  • PHP实现读取Excel文件的记录(一)

    因为工作需要将Excel的文件记录读出再写入数据库中,之前使用的是VBS,可是那也不是正规的应用程序,使用PowerBuilder也可以,但是PowerBuilder毕竟只是临时使用,C#好长时间不用了,就打算使用最近学习的PHP来操作. 下班后就开始干,折腾了将近4个小时,终于搞定了,遇到了好多的坑,快崩溃了,想一想为这些肤浅的代码所累,程序员的日子不好过! 要使用PHP读取Excel的文件记录,查了资料都是使用PHPExcel这个文件包,并且全部都要使用Composer来安装,结果遇到了第一

  • PowerShell读取文件内容、替换文件内容、读取限定行的例子

    我只能说,使用PowerShell来读取文本文件实在是一件太简单的事情了. Get-Content,获取指定位置的项的内容. 语法:Get-Content [-Path] <文件路径> [-Path]由方括号引起,表示可以写,也可以不写:不写则默认后面是文件路径,写了就指名道姓的说后面是文件路径. 直接运行这样一个命令,PowerShell将会把文件的内容输出到控制台上,如果你是想看看文件的内容,那这样做就Perfect! 但有时候,你想玩点高难度的运作--想把文件翻开来对里面的内容进行修改,

  • PowerShell读取文本文件指定行内容的方法

    本文介绍一个PowerShell中如何一步到位的获取到一个文本文件的第N行.比如一个文本文件,它有1000行,我想把第500行的内容直接取出来的,最简单的方法是通过PowerShell来实现. 在PowerShell中,可以通过Get-Content这个cmdlet来获取文本文件的内容.Get-Content将一个文本文件读取到一个数组中,每一个数组元素就是文件的一行内容.比如一个文本文件内容如下: 复制代码 代码如下: 111 222 333 那么,使用Get-Content获取到一个数组,数

  • mysql数据库插入速度和读取速度的调整记录

    (1)提高数据库插入性能中心思想:尽量将数据一次性写入到Data File和减少数据库的checkpoint 操作.这次修改了下面四个配置项: 1)将 innodb_flush_log_at_trx_commit 配置设定为0:按过往经验设定为0,插入速度会有很大提高. 0: Write the log buffer to the log file and flush the log file every second, but do nothing at transaction commit.

  • PowerShell小技巧之定时记录操作系统行为

    作为系统管理员,有些时候是需要记录系统中的其他用户的一些操作行为的,例如:当系统管理员怀疑系统存在漏洞,且已经有被植入后门或者创建隐藏账户时,就需要对曾经登陆的用户进行监控,保存其打开或者操作过的文件.或者在另外一个场景,当黑客拿下一个普通权限的shell之后,想看看最近有哪些用户登陆过,操作过什么,以便根据用户习惯采取进一步行动获取更高权限,这个时候记录用户行为就显得很重要了. 可能有读者觉得此时安装个监控软件不就行了么,拜托,你入侵别人的系统,你装个监控软件,你把管理员试做无物么?这个时候P

  • Powershell读取本机注册表中的所有软件关联扩展名

    适用于所有版本. 下面代码输出极为密集,这段代码能从注册表获取所有软件的关联扩展名. 复制代码 代码如下: Get-ItemProperty Registry::HKCR\.* |   Select-Object -Property PSChildName, '(default)', ContentType, PerceivedType 注意搭配命令使用:这里Get-ItemProperty使用用了"Registry::"方法替代了Powershell原注册表驱动路径,这种方法你可以使

  • Powershell读取PFX证书并输入密码的脚本分享

    支持所有PS版本 当你使用Get-PfxCertificate读取PFX证书去签名你的脚本,但是它总是会已交互式方式提示用户去输入密码. 下面介绍怎么通过脚本去提交密码: 复制代码 代码如下: $PathToPfxFile = 'C:\temp\test.pfx' $PFXPassword = 'test'   Add-Type -AssemblyName System.Security $cert = New-Object System.Security.Cryptography.X509Ce

随机推荐