You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求修改PowerShell脚本:新增高CPU占用的进程/服务识别功能

修改后的CPU高占用告警PowerShell脚本

以下是添加了高CPU占用进程信息的完整脚本,会在CPU总占用率≥90%时,将Top 10高CPU进程信息以HTML表格形式包含在告警邮件中:

# 定义收件人
$recipients = "recipient@example.com"

while($true){
    # 获取CPU总占用率
    $cpuTotal = (Get-Counter -Counter "\Processor(_Total)\% Processor Time").CounterSamples.CookedValue
    
    if($cpuTotal -ge 90){
        # 获取Top 10高CPU占用的进程(按累计CPU使用率排序)
        $topProcesses = Get-Process | Sort-Object CPU -Descending | Select-Object Name, Id, @{Name="CPU%"; Expression={[math]::Round($_.CPU, 2)}} -First 10
        
        # 构建HTML格式的邮件正文
        $body = @"
        <h3>CPU高占用告警</h3>
        <p>当前CPU总占用率:<strong>$([math]::Round($cpuTotal, 2))%</strong></p>
        <p>Top 10高CPU占用进程:</p>
        <table border='1' cellpadding='4'>
            <tr>
                <th>进程名称</th>
                <th>进程ID</th>
                <th>累计CPU使用率%</th>
            </tr>
            $($topProcesses | ForEach-Object {
                "<tr><td>$($_.Name)</td><td>$($_.Id)</td><td>$($_.CPU%)</td></tr>"
            })
        </table>
"@
        
        # 发送告警邮件,指定Body为HTML格式
        Send-MailMessage -Body $body -BodyAsHtml `
                        -From "MyPC@XXXXX" `
                        -SmtpServer "xxx.xxx.xxx" `
                        -Subject "CPU High on my PC - 当前占用率 $([math]::Round($cpuTotal, 2))%" `
                        -To $recipients
    }
    Start-Sleep -Seconds 60
}

关键修改说明

  • 进程信息采集:用Get-Process获取所有进程,按累计CPU使用率降序排序后取前10个,同时将CPU数值格式化保留两位小数
  • HTML格式邮件:把告警内容和进程信息整理成表格形式,通过-BodyAsHtml参数让邮件客户端按HTML渲染,提升可读性
  • 动态内容优化:邮件主题加入实时CPU占用率,正文明确展示总占用率和Top进程的名称、ID、CPU使用率
  • 配置简化:将收件人变量提取到脚本开头,方便后续修改

内容的提问来源于stack exchange,提问作者Allan Ray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 23:10:05