我想将 CPU 列从任务管理器复制到 CSV 文件中。但命令 tasklist 只提供进程名称、PID、内存、会话名称和会话编号,而不提供 CPU。请帮我使用命令将进程的 CPU 使用率从任务管理器复制到 CSV 文件。
答案1
您可以使用此 Powershell 命令:
Get-Process | Export-Csv -Path c:\path\to\yourfolder\yourfile.csv
从获取进程文档:
进程的默认显示是包含以下列的表格。有关进程对象的所有属性的描述,请参阅 MSDN 库中的进程属性。
- Handles:进程已打开的句柄数。
- NPM(K):进程正在使用的非分页内存量,以千字节为单位。
- PM(K):进程正在使用的可分页内存量,以千字节为单位。
- WS(K):进程工作集的大小,以千字节为单位。工作集由进程最近引用的内存页面组成。
- VM(M):进程使用的虚拟内存量(以兆字节为单位)。虚拟内存包括磁盘上页面文件中的存储。
- CPU:该进程在所有处理器上使用的处理器时间(以秒为单位)。
- ID:进程的进程 ID (PID)。
- ProcessName:进程的名称。有关进程相关概念的解释,请参阅帮助和支持中心中的词汇表和任务管理器的帮助。
答案2
它可能有点慢,但是在 powershell 中相当准确:
tasklist /fo csv | set-content temp.csv
Import-csv temp.csv |
Select-Object *,@{n='CPU %';e={$iu = $_.'Image Name'.split('.')[0]; (Get-Counter '\Process(*)\% Processor Time').CounterSamples | Where-Object {$_.InstanceName -eq "$iu"} | Select -Expand CookedValue}} |
Export-Csv "filename.csv"
Remove-Item temp.csv
中的 CPU 列Get-Process
不准确,因此请使用Get-Counter
。将“filename.csv”替换为输出文件。