如何在命令行上获得Windows Pid的CPU使用率?

我知道通过进程名得到这个的许多方法,但是我有许多相同名称的进程(Java),所以需要使用PID。

很高兴使用任何工具/语言来完成这件事。

最终这将被称为使用Cygwin。 谢谢

您可以使用psTools来尝试下面的命令

pslist <pid> -s 

你可以使用一个快速的PowerShell脚本:

 $searchPid = 6204 get-process | where-object Id -eq $searchPid | select-object CPU 

在命令行,你应该只需要这个:

 powershell "get-process | where-object Id -eq 6204 | select-object CPU" 

UPDATE

如注释中所述,get-process只返回进程已经使用的CPU时间,因此它不能帮助CPU的使用百分比。 看起来像一个WMI调用应该得到你的百分比:

 powershell "get-wmiobject Win32_PerfFormattedData_PerfProc_Process | where-object idprocess -eq 6204 | select PercentProcessorTime" 

这VB脚本似乎做的伎俩,传递在命令行上的PID:(初始循环可以省略)

 对于GetObject(“winmgmts:”)中的每个进程,ExecQuery(“Select * from Win32_Process where Handle =”&WScript.Arguments.Item(0)&“”)
  WScript.echo Process.Handle&“”&Process.name&“”&CPUUSage(Process.Handle)&“%”   
下一个

函数CPUUSage(ProcID)
  在错误恢复下一步

 Set objService = GetObject(“Winmgmts:{impersonationlevel = impersonate}!\ Root \ Cimv2”)

对于objService.ExecQuery中的每个objInstance1(“Select * from Win32_PerfRawData_PerfProc_Process where IDProcess ='”&ProcID&“'”)
     N1 = objInstance1.PercentProcessorTime
     D1 = objInstance1.TimeStamp_Sys100NS
    退出
下一个

  WScript.Sleep(2000)

对于objService.ExecQuery(“Select * from Win32_PerfRawData_PerfProc_Process where IDProcess ='”&ProcID&“'”)中的每个perf_instance2,
     N2 = perf_instance2.PercentProcessorTime
     D2 = perf_instance2.TimeStamp_Sys100NS
    退出
下一个

 const wbemFlagReturnImmediately =&h10
常量wbemFlagForwardOnly =&h20
 strComputer =“。”

设置objWMIService = GetObject(“winmgmts:\\”&strComputer&“\ root \ CIMV2”)
设置colItems = objWMIService.ExecQuery(“SELECT * FROM Win32_Processor”,“WQL”,_
                                       wbemFlagReturnImmediately + wbemFlagForwardOnly)

对于每个对象在colItems中
     Nc = objItem.NumberOfLogicalProcessors
下一个

 'CounterType  -  PERF_100NSEC_TIMER_INV
公式 - (1-((N2-N1)/(D2-D1)))×100
 Nd =(N2-N1)
 Dd =(D2-D1)
 Nd / Dd =使用的核心数量。
 '((Nd / Dd)/ Nc)* 100 =整箱使用的百分比
 PercentProcessorTime =((Nd / Dd)/ Nc)* 100

 CPUUSage = Round(PercentProcessorTime,2)
结束功能

例如(在cygwin中)如果上面的文件是cpu.vbs:cmd / c cscript / nologo cpu.vbs 64940