列出CPU时间最多的进程(Powershell)

我怎样才能使它没有列举系统服务? 我希望系统进程以及所有其他系统服务,如svchost不在列表中。

Get-Process | Sort-Object CPU -desc | Select-Object -first 3 | Format-Table CPU,ProcessName,Id -hidetableheader 

我喜欢其他的答案,但是这里有另外一个不需要管理权限的可能性,尽管这可能不是很好的证明:

大多数系统服务在名为svchost的进程中运行,所以您可以简单地使用Where-Object排除这些进程:

 Get-Process | Where-Object {$_.name -ne 'svchost'} | Sort-Object CPU -desc | Select-Object -first 3 | Format-Table CPU,ProcessName,Id -hidetableheader 

您可能需要进入管理员模式。

 Get-Process -IncludeUserName | where {$_.UserName -notlike "NT AUTHORITY\SYSTEM"} | Sort-Object CPU -desc | Select-Object -first 3 | Format-Table CPU,ProcessName,Id -hidetableheader 

这是你要求的吗?

我喜欢简单的其他答案,但是您可以使用WMI类Win32_Process来检索进程列表和方法.GetOwner()来获取进程的所有者。

由于系统进程不显示所有者,所以我们可以很容易地过滤拥有所有者的进程,显示大多数非系统进程(我之所以说最多是因为svchost偶尔出现在我的帐户下)。

 # Get all processes $processes = Get-WMIObject -Class Win32_Process foreach($process in $processes) { try { $processOwner = $process.GetOwner() } catch { continue } if ($processOwner.User -ne $null) { $processData = Get-Process -Id $process.ProcessId $process | Select-Object -Property @{n='CPU';e={$processData.CPU}},Name,ID | Sort-Object -Property CPU } }