【发布时间】:2017-10-13 19:09:05
【问题描述】:
具有以下工作正常,但在 PowerShell 中存在问题:
$FileName = "E:\Work\ps\Inventory.htm"
$serverlist = "E:\Work\ps\Monitored_computers.txt"
foreach ($server in Get-Content $serverlist)
{
$servern=$server.split(",")[0]
$ip=$server.split(",")[1]
$cpu = gwmi Win32_PerfFormattedData_PerfProc_Process -Computer $servern -filter "Name <> '_Total' and Name <> 'Idle'" | Sort-Object PercentProcessorTime -Descending | where { $_.PercentProcessorTime -gt 0 }| select -First 1
if ($cpu.PercentProcessorTime -ge "92") {
write-host $servern ' ' $cpu.Name ' ' $cpu.PercentProcessorTime
}
}
我在 PowerShell 中看到了一些其他代码,它们取平均值,但几乎看起来像是“平均值的平均值”——这是没有意义的。而且,这是针对整体 CPU 使用率的
gwmi win32_processor | Measure-Object -property LoadPercentage -Average | Foreach {$_.Average}
现在,如果我们可以采用相同的逻辑并申请我们的流程问题:
gwmi Win32_PerfFormattedData_PerfProc_Process | Sort-Object PercentProcessorTime -Descending | where { $_.PercentProcessorTime -gt 0 } | select -First 1 | Measure-Object -property PercentProcessorTime -Average | Foreach {$_.PercentProcessorTime}
我想问的是:我确实得到了 CPU 百分比,这似乎是一个“时间点”。如何找到真正的 CPU 百分比?这就是我指出平均值的原因。我真的很想绕过其中的“时间点”部分。
关键是,当我们多次看到服务器上每个进程的 CPU 很高时,我们登录到服务器,高 CPU 已经消退。这并不是说,每次都是这样,但我们知道有时 CPU 会出现峰值然后安静下来。
感谢您的任何见解!
【问题讨论】:
-
您的问题是什么?您在 PowerShell 中提到了一个问题,但不知道问题是什么。
标签: powershell cpu-usage