PowerShell 读取性能计数器二进制文件(.blg)记录并汇总计算(读出计数器上的数)干货满满

随心笔谈2年前发布 admin
178 0 0

文章摘要

这篇文章介绍了一种使用PowerShell脚本进行性能监控计数器数据处理的方法。脚本通过以下步骤实现数据处理: 1. **设置时间范围**:通过`Get-Date`函数获取当前日期,并设置起始日期和结束日期。 2. **定义日志路径**:指定计数器日志文件的路径,并使用`Import-Counter`将文件中的计数器信息导入到内存中。 3. **筛选计数器数据**:根据时间范围筛选日志数据,提取所有符合条件的计数器名称。 4. **提取计数器信息**:遍历每个计数器,计算其平均值、最小值和最大值,并将结果存储在哈希表中。 5. **导出结果**:通过`Out-File`、`Export-Csv`和`Format-List`等方法,将结果以文本文件和Excel表格的形式导出到指定路径。 文章的核心内容是通过PowerShell脚本实现了对性能监控计数器数据的高效处理和存储,同时提供了多种导出方式供用户选择。


$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

© 版权声明

相关文章