当前位置: 首页 > 编程笔记 >

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

易星纬
2023-03-14
本文向大家介绍PowerShell 读取性能计数器二进制文件(.blg)记录并汇总计算,包括了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 

 类似资料:
  • 我有一个csv文件,其中包含4个字段(列)。在4列中,我想读第二列,想读csv文件的特定列的第一个名称,并使用Java计算列记录。请帮忙。

  • 使用我将跟踪的请求大小的摘要 < li >请求总数 < li >总请求大小总计 < li >最大请求大小 我可以这样做 但是,我可以使用计数器和最大尺寸的量规来实现相同的效果 问题是,除了更短之外,总结比更长的解决方案有什么好处吗?

  • 问题内容: 我有一个较长的无符号整数文件(每个64位,0.47GB文件),需要读取并存储在数组中。经过一番思考之后,由于Java中的所有内容都已签名(请纠正我,请纠正我),因此我长时间使用了该类型,我想不出更好的选择了。无论如何,仅需对数组进行排序,因此原始数字的精确值并不是最重要的。我们应该测量排序算法的效率,仅此而已。但是,当我实际要读取文件时(在下面的代码中),我遇到了砖墙。 它会一直持续下

  • 问题内容: 我正在尝试从URLConnection读取二进制文件。当我使用文本文件对其进行测试时,它似乎可以正常工作,但对于二进制文件则不能。发送文件时,我在服务器上使用以下mime类型: 但是到目前为止,似乎没有任何效果。这是我用来接收文件的代码: 问题答案: 我就是这样

  • 问题内容: 我发现用Python读取二进制文件特别困难。你能帮我个忙吗?我需要读取此文件,在Fortran 90中,该文件很容易被读取 详细而言,文件格式为: 如何使用Python阅读?我尝试了一切,但没有成功。我是否有可能在python中使用f90程序,读取此二进制文件,然后保存需要使用的数据? 问题答案: 读取二进制文件内容,如下所示: 然后使用struct.unpack “解压缩”二进制数据

  • Python 不仅支持文本文件的读写,也支持二进制文件的读写,比如图片,声音文件等。 读取二进制文件 读取二进制文件使用 ‘rb’ 模式。 这里以图片为例: with open('test.png', 'rb') as f: image_data = f.read() # image_data 是字节字符串格式的,而不是文本字符串 这里需要注意的是,在读取二进制数据时,返回的数据是字