PowerShell可纯系统命令实现Windows资源监控看板:定时采集CPU、内存、磁盘、网络指标,用Get-Counter/Get-CimInstance获取数据,封装函数返回带时间戳哈希表,通过ConvertTo-Html生成含阈值变色的自刷新HTML页面,并用计划任务或后台循环写入CSV日志。
用 powershell 做 windows 资源使用统计看板,核心是定时采集 + 可视化呈现。不依赖第三方工具,纯系统自带命令就能完成基础监控:cpu、内存、磁盘、网络四类指标可实时抓取,再用 html 或简易图表输出,适合本地运维或轻量级值守场景。
CPU 与内存使用率实时采集
PowerShell 提供 Get-Counter 和 Get-WmiObject(或新式 Get-CimInstance)两种主流方式。前者精度高、支持历史采样;后者兼容性好、无需额外权限。
-
Get-Counter '\Processor(_Total)\% Processor Time' -SampleInterval 1 -MaxSamples 5可获取 5 秒内平均 CPU 使用率 -
Get-CimInstance Win32_OperatingSystem | ForEach-Object { [math]::Round(100 * (1 - ($_.FreePhysicalMemory / $_.TotalVisibleMemorySize)), 2) }计算内存使用百分比 - 建议封装成函数,如
Get-CPUUsage和Get-MemoryUsage,返回带时间戳的哈希表,便于后续聚合
磁盘空间与 I/O 状态汇总
重点关注已用空间占比和读写延迟,避免只看“剩余空间”忽略性能瓶颈。
-
Get-PSDrive C | Select-Object Used, Free, @{Name='UsedPct';Expression={[math]::Round(100*$_.Used/($_.Used+$_.Free),1)}}快速获取 C 盘使用率 -
Get-Counter '\LogicalDisk(C:)\Avg. Disk sec/Read','\LogicalDisk(C:)\Avg. Disk sec/Write'抓取磁盘响应时间(毫秒),>15ms 需关注 - 对多盘符可用
Get-WmiObject Win32_Volume | Where-Object {$_.DriveType -eq 3} | Select DriveLetter, Capacity, FreeSpace
生成 HTML 看板页面
不用外部库,用字符串拼接 + CSS 内联样式即可生成可刷新的静态页。关键点在于结构清晰、数值醒目、自动更新。
- 每次采集后构建一个
$data对象数组,包含时间、CPU、内存、C盘使用率、磁盘延迟等字段 - 用
ConvertTo-Html生成表格,配合-Head参数注入自定义 CSS(如背景色按阈值变红/黄/绿) - 在 HTML head 中加入
<meta http-equiv="refresh" content="30">实现每 30 秒自动刷新 - 保存为
Dashboard.html,双击用 Edge 或 Chrome 打开即生效
后台定时运行与日志留存
让看板长期可用,需解决脚本驻留和数据沉淀问题。
- 用
Register-ScheduledJob创建计划任务,每分钟执行一次采集并追加到 CSV 文件 - CSV 文件按日期命名(如
usage_20240512.csv),每行含时间戳和各指标值,方便后期用 Excel 或 PowerShell 分析趋势 - 若需常驻进程,可用
while($true){... Start-Sleep -Seconds 60}配合Start-Process powershell.exe -WindowStyle Hidden后台启动 - 注意添加错误捕获(
try/catch)和日志记录(Out-File -Append),避免单次失败中断整个流程

















