我正在用Powershell Get-Process cmdlet进行一些validation,并得到了一些有关某些进程的奇怪值。 我在运行SQL Server实例的服务器上进行了testing,耗用3GB + RAM作为资源监视器报告,并且在运行Get-Process时,我在SQL Server进程上获得了WorkingSet的负值,另一个进程消耗了2GB的PrivateMemorySize, PM的负值。
以下是结果的截图。
操作系统是用葡萄牙语,对不起。
电源shell:
检查sqlservr和最后一个scvhost …
幸运的是我的脚本使用WMI(Win32_Process类)来获取进程信息,并且这些值是正确的,并且所有匹配项都是相同的。
这是一个错误? 也许有很大的价值? 我正在使用Powershell v3。
这是一个x64服务器? 如果是这样, 这个博客可能会解释你的问题。 显然它与get-process读取x64系统内存的方式有关:
海报看到负数的原因相当简单:WS属性被别名为WorkingSet,但WorkingSet是一个32位的值。 在海报的情况下,工作集大小溢出了32位值,导致显示负数。
根据博客的解决scheme最终是强制查询结果的格式:
$process = “*SQL"*” GPS $process | ft name, workingset64 –auto