Powershell Get-Process 负内存值

ess*_*ael 8 windows powershell

我正在使用 Powershell Get-Process cmdlet 进行一些验证,并获得了一些关于某些进程的奇怪值。我在服务器上进行了测试,其中 SQL Server 实例正在运行并消耗 3GB+ RAM,如资源监视器报告的那样,并且在运行 Get-Process 时,我在 SQL Server 进程上获得了 WorkingSet 的负值,另一个进程正在消耗 2GB+ 的 PrivateMemorySize 并得到相同的结果PM 上的负值。

下面是结果的截图。

资源监视器 操作系统是葡萄牙语,抱歉。

电源外壳:

在此处输入图片说明 检查sqlservr和最后一个scvhost...

幸运的是,我的脚本使用 WMI(Win32_Process 类)来获取进程信息,并且那里的值是正确的并且一切都匹配..

这是一个错误吗?也许有很大的价值?我正在使用 Powershell v3。

Kat*_*ate 11

这是 x64 服务器吗?如果是这样,这篇博文可能解释了您的问题。显然它与 get-process 读取 x64 系统内存的方式有关:

发布者看到负数的原因很简单:WS 属性是 WorkingSet 的别名,但 WorkingSet 是一个 32 位值。在海报的情况下,工作集大小溢出了 32 位值,导致显示一个负数。

根据博客的解决方案最终是强制执行查询结果的格式:

$process = “*SQL"*” GPS $process | ft name, workingset64 –auto