我怎样才能使它没有列举系统服务? 我希望系统进程以及所有其他系统服务,如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 } }