Powershell Get-Process负内存值


8

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

以下是结果的屏幕截图。

资源监控器 抱歉,该操作系统为葡萄牙​​语。

电源外壳:

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

幸运的是,我的脚本使用WMI(Win32_Process类)来获取进程信息,并且其中的值正确且所有内容都匹配。

是虫子吗?也许价值很高?我正在使用Powershell v3。

Answers:


11

这是x64服务器吗?如果是这样,则此博客文章可能会解释您的问题。显然,它与get进程读取x64系统内存的方式有关:

发布者看到负数的原因非常简单:WS属性别名为WorkingSet,但是WorkingSet是32位值。对于发布者,工作集大小溢出了32位值,导致显示负数。

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

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


谢谢,我怀疑它有值大小的东西等等。另外,我只能在服务器上本地运行命令时获得正确的结果,如果我使用-Co​​mputerName参数进行远程运行,则会得到相同的否定结果。使用PSSession运行正常。
esserafael 2014年

0

选择WorkingSet64而不是WorkingSet对我有用,而无需格式化。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.