Powershell Get-Process 与任务管理器差异

Powershell Get-Process 与任务管理器差异

我正在编写一个 PowerShell 脚本,根据 Get-Process 的值工作集 (WS) 获取消耗内存的前 10 个进程。我运行以下行并获取结果,看起来很棒,但当我检查任务管理器时,我没有得到相同的值。甚至顺序也不同。

Get-Process | Sort WS -Descending | Select Name,WS -First 10

得到这个:

电源外壳

然后任务管理器有这个:

任务管理器

我还需要做其他计算吗?有人能解释一下吗?

PS:OS是葡萄牙语的。

答案1

好的,我刚刚意识到发生了什么。任务管理器中默认的“内存”列实际上代表的是私有工作集,而不是 Powershell 中的工作集,后者代表与其他进程共享的私有内存。只需在任务管理器中启用“内存 - 工作集”列,它就会匹配。

任务管理器

显然Powershell中的值以字节为单位,需要计算到Mb。

这个页面也很有帮助:

http://windows.microsoft.com/en-us/windows/what-task-manager-memory-columns-mean#1TC=windows-7

答案2

(共享)工作集和私有工作集是两个不同的东西。

更多信息关于内存使用情况或:工作集与私有工作集

要通过 PowerShell 中的 Get-Process 获取私有工作集,可以使用“PrivateMemorySize”:

Get-process | Sort PrivateMemorySize -Descending | Select Name,PrivateMemorySize -First 10

相关内容