Powershell Get-Process negativer Speicherwert

8

Ich habe einige Überprüfungen mit dem Cmdlet Powershell Get-Process durchgeführt und einige seltsame Werte für einige Prozesse erhalten. Ich habe auf einem Server mit einer SQL Server-Instanz getestet, die 3 GB + RAM ausführt und verbraucht, wie Resource Monitor berichtet, und beim Ausführen von Get-Process habe ich negative Werte für WorkingSet auf dem SQL Server-Prozess erhalten. Ein anderer Prozess verbraucht 2 GB + PrivateMemorySize und hat dasselbe negativer Wert auf PM.

Unten finden Sie Screenshots der Ergebnisse.

Ressourcenmonitor Das Betriebssystem ist auf Portugiesisch, sorry.

Power Shell:

Geben Sie hier die Bildbeschreibung ein Überprüfen Sie sqlservr und den letzten scvhost ...

Glücklicherweise verwendet mein Skript WMI (Win32_Process-Klasse), um die Prozessinformationen abzurufen, und die Werte dort sind korrekt und alles stimmt überein.

Ist es ein Fehler? Vielleicht mit großen Werten? Ich benutze Powershell v3.

esserafael
quelle

Antworten:

11

Ist das ein x64 Server? Wenn ja, ist es möglich, dass dieser Blogpost Ihr Problem erklärt. Anscheinend hat es damit zu tun, wie der Get-Prozess den x64-Systemspeicher liest:

Der Grund, warum auf dem Poster negative Zahlen angezeigt wurden, ist recht einfach: Die WS-Eigenschaft ist auf WorkingSet ausgerichtet, WorkingSet ist jedoch ein 32-Bit-Wert. Im Fall des Posters überschritt die Größe des Arbeitssatzes den 32-Bit-Wert, was dazu führte, dass eine negative Zahl angezeigt wurde.

Die Lösung laut Blog besteht letztendlich darin, die Formatierung des Abfrageergebnisses zu erzwingen:

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

Kate
quelle
Danke, ich vermutete, dass es etwas mit Wertgrößen und so weiter gab. Außerdem kann ich nur dann die richtigen Ergebnisse erhalten, wenn ich den Befehl lokal auf dem Server ausführe. Wenn ich remote mit dem Parameter -ComputerName ausführe, erhalte ich dieselben negativen Ergebnisse. Das Laufen mit PSSession funktioniert einwandfrei.
esserafael
0

Die Auswahl von WorkingSet64 anstelle von WorkingSet hat den Trick für mich ohne Formatierung erledigt.

Jamie
quelle