powershell 是 windows 自动化巡检高效工具,可批量采集 cpu、内存、磁盘及服务状态等指标;通过 get-counter、get-service、get-process 获取数据,convertto-json/export-csv 生成结构化报告,并支持定时执行与异常告警。
powershell 是 windows 系统自动化巡检的高效工具,尤其适合批量采集 cpu、内存、磁盘、服务状态等关键性能指标。无需安装额外软件,直接调用系统内置命令和 wmi/cim 接口即可完成稳定、可复用的巡检脚本。
采集核心性能指标
使用 Get-Counter 获取实时性能计数器数据,比任务管理器更精确、支持历史导出:
- CPU 使用率:
Get-Counter '\Processor(_Total)\% Processor Time' - 内存可用字节:
Get-Counter '\Memory\Available Bytes' - 磁盘队列长度:
Get-Counter '\LogicalDisk(C:)\Current Disk Queue Length' - 建议每项采集 3 次取平均值,避免瞬时抖动干扰判断
检查关键服务与进程状态
结合 Get-Service 和 Get-Process 快速识别异常:
- 筛选已停止但应运行的服务:
Get-Service | Where-Object {$_.Status -eq 'Stopped' -and $_.StartType -eq 'Automatic'} - 定位高内存或高 CPU 进程:
Get-Process | Sort-Object WS -Descending | Select-Object -First 5 - 可附加条件如
-IncludeUserName查看进程所属用户,便于排查权限类问题
生成结构化巡检报告
用 ConvertTo-Json 或 Export-Csv 输出结果,方便归档与比对:
- 将多项指标打包为自定义对象再导出:
[PSCustomObject]@{Time=(Get-Date); CPU=$cpuAvg; MemoryFree=$memFree; DiskQueue=$diskQ} | Export-Csv -Path "report_$(Get-Date -Format 'yyyyMMdd_HHmm').csv" -NoTypeInformation - 添加时间戳和主机名字段,确保多机巡检结果可追溯
- 若需 HTML 报告,可用 ConvertTo-Html 配合简单 CSS 样式提升可读性
定时自动执行与异常提醒
通过 Windows 任务计划程序(schtasks)或 PowerShell 的 Register-ScheduledJob 实现无人值守:
- 每日早 8 点执行:
Register-ScheduledJob -Name "DailyPerfCheck" -ScriptBlock {& "C:\scripts\perf-check.ps1"} -Trigger (New-JobTrigger -Daily -At "08:00") - 发现 CPU >90% 持续 5 分钟,自动发邮件或写入事件日志:
Write-EventLog -LogName Application -Source "PerfCheck" -EventId 1001 -EntryType Warning -Message "High CPU detected" - 脚本开头加入
$ErrorActionPreference = 'Stop',确保错误不被静默忽略










