首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Get-WmiObject使用示例监视CPU

使用Get-WmiObject使用示例监视CPU
EN

Stack Overflow用户
提问于 2019-04-28 23:01:13
回答 1查看 352关注 0票数 0

出于安全要求,我使用Get-WmiObject cmdlet来监控未安装PowerShell的服务器的平均CPU使用率。

代码语言:javascript
复制
$CPU = Get-WmiObject Win32_Processor -computername $computerName  | Measure-Object -property LoadPercentage -Average | Select Average


$CPULoad = $($CPU.average)                                   

if ( $CPULoad -ge $ThresholdCPU ){                                          

Write-output "High CPU usage: $CPULoad % on $computerName" 

} 
Else {

Write-output "CPU usage on $computerName is normal: $CPULoad %" 

}

当当前CPU使用率高于手动设置的CPU阈值iv'e时,我的脚本工作正常。

但是,由于远程服务器中的CPU使用率激增,我面临着许多错误警报。

在阅读了cmdlet的文档后,我发现与Get-Counter cmdlet相反,Get-WmiObject没有某种SampleInterval属性。

有没有办法使用Get-WmiObject来实现这一点,所以if标准只有在3个有效样本之后才为真?

EN

回答 1

Stack Overflow用户

发布于 2019-04-30 22:10:17

也许使用固定次数的循环可以达到您想要的效果:

代码语言:javascript
复制
$maxAttempts = 3                                
for ($attempt = 0; $attempt -lt $maxAttempts; $attempt++) {
    $CPULoad = (Get-WmiObject Win32_Processor -ComputerName $computerName  | 
                Measure-Object -property LoadPercentage -Average).Average
    if ( $CPULoad -le $ThresholdCPU ) { break }
    # do nothing for x seconds and test CPU load again
    Start-Sleep -Seconds 1
}

if ($attempt -lt $maxAttempts) {
    Write-output "CPU usage on $computerName is normal: $CPULoad %" 
}
else {
    Write-output "High CPU usage: $CPULoad % on $computerName" 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55891533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档