如何编写PowerShell程序统计15分钟内CPU平均使用率
统计15分钟内CPU平均使用率的PowerShell实现
你的示例命令只能获取单次CPU使用率,要统计15分钟的平均使用率,需要定时重复采样,再计算所有采样值的平均值。以下是完整实现脚本:
# 配置采样参数 $monitorDurationMinutes = 15 $sampleIntervalSeconds = 10 # 可按需调整采样频率,数值越小精度越高 $totalSampleCount = ($monitorDurationMinutes * 60) / $sampleIntervalSeconds # 存储所有CPU使用率采样结果 $cpuUsageData = @() Write-Host "开始采集15分钟内的CPU使用率,采样间隔$sampleIntervalSeconds秒..." for ($count = 1; $count -le $totalSampleCount; $count++) { # 获取当前CPU平均使用率(用Get-CimInstance替代已弃用的Get-WmiObject) $currentUsage = Get-CimInstance Win32_Processor | Measure-Object -Property LoadPercentage -Average | Select-Object -ExpandProperty Average $cpuUsageData += $currentUsage # 显示采集进度 $progressRate = [math]::Round(($count / $totalSampleCount) * 100, 2) Write-Host "进度: $progressRate% | 当前CPU使用率: $currentUsage%" # 最后一次采样无需等待 if ($count -lt $totalSampleCount) { Start-Sleep -Seconds $sampleIntervalSeconds } } # 计算并输出最终平均使用率 $averageCpu = [math]::Round(($cpuUsageData | Measure-Object -Average).Average, 2) Write-Host "`n15分钟内CPU平均使用率: $averageCpu%" # 将结果写入文件 $averageCpu | Out-File "c:\RM.txt" -Encoding utf8
关键说明
- 采样间隔调整:如果需要更高精度,可以把
$sampleIntervalSeconds改为5秒;如果想降低资源占用,可改为30秒 - 替代命令:用
Get-CimInstance代替Get-WmiObject,因为后者已被PowerShell官方弃用,兼容性更好 - 权限注意:写入C盘根目录可能需要管理员权限,若报错可将输出路径改为用户目录(比如
$HOME\RM.txt)
内容的提问来源于stack exchange,提问作者user21446047
相关产品推荐
相关产品推荐

