可通过powershell的get-process命令获取进程cpu、内存、pid、启动时间等统计信息;支持按cpu累计时间或内存占用排序筛选异常进程,并可导出为csv供分析。
可以通过 powershell 的 get-process 命令获取当前 windows 系统中所有活跃进程的详细统计信息,包括 cpu、内存占用、pid、启动时间等。
基础进程列表与关键字段
运行以下命令可列出所有进程,并显示常用统计字段:
Get-Process | Select-Object Id, ProcessName, CPU, WorkingSet, StartTime, Path | Sort-Object CPU -Descending | Format-Table -AutoSize- Id:进程 ID(PID)
- CPU:该进程自启动以来累计使用的 CPU 时间(秒),不是实时百分比
-
WorkingSet:当前物理内存占用(字节数),可用
[math]::Round($_.WorkingSet/1MB,2)转为 MB - StartTime:进程启动时间,便于识别异常长时运行或刚启动的进程
实时 CPU 占用率(需两次采样)
PowerShell 默认不提供瞬时 CPU 百分比,需结合 Get-Counter 获取性能计数器数据:
通过 SSH 隧道从 Android 设备在互联网上对 Windows PC 实现完整远程控制的设置与使用指南,适用于远程桌面访问、安全 RDP 等。
Get-Counter '\Process(*)\% Processor Time' -SampleInterval 1 -MaxSamples 2 | ForEach-Object {$_.CounterSamples | Where-Object {$_.CookedValue -gt 0}} | Sort-Object CookedValue -Descending | Select-Object InstanceName, CookedValue -First 10- 该命令每秒采集一次,共取两组样本,计算出近似瞬时 CPU 使用率
-
InstanceName 为进程名(
Idle和_Total需过滤),CookedValue 即近似 CPU %
筛选高资源占用进程
快速定位内存或 CPU 异常的进程:
- 查内存前 5 名(MB):
Get-Process | Sort-Object WorkingSet -Descending | Select-Object ProcessName, @{Name='MemoryMB';Expression={[math]::Round($_.WorkingSet/1MB,2)}} -First 5 - 查 CPU 累计耗时前 5 名:
Get-Process | Where-Object {$_.CPU -gt 0} | Sort-Object CPU -Descending | Select-Object ProcessName, CPU -First 5 - 排除系统空闲进程(如
System Idle Process)和低权限进程(可加| Where-Object {$_.Id -ne 0})
导出为 CSV 便于分析
将完整统计保存为表格文件供后续查看或 Excel 分析:
Get-Process | Select-Object Id, ProcessName, @{Name='CPU_sec';Expression={$_.CPU}}, @{Name='Memory_MB';Expression={[math]::Round($_.WorkingSet/1MB,2)}}, StartTime, Path | Export-Csv -Path "$env:USERPROFILE\Desktop\ProcessStats.csv" -NoTypeInformation- 导出后可在 Excel 中按内存、CPU 或启动时间排序,辅助排查卡顿、泄漏等问题










