Powershell-Unstimmigkeiten bei Get-Process und Task Manager

3

Ich erstelle ein PowerShell-Skript, um den ersten 10 Prozess zu ermitteln, der Speicher verbraucht, basierend auf dem Arbeitssatz (WS) des Get-Process-Werts. Ich führe die folgende Zeile aus und erhalte die Ergebnisse, sieht großartig aus, aber wenn ich den Task-Manager einchecke, bekomme ich nicht die gleichen Werte. Sogar die Reihenfolge ist anders.

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

Das bekommen:

PowerShell

Dann hat der Task-Manager folgendes:

Task Manager

Muss ich andere Berechnungen machen? Jeder könnte das erklären?

Danke im Rat.

PS: OS ist auf Portugiesisch.

esserafael
quelle

Antworten:

4

Ok, ich habe gerade realisiert, was passiert ist. Die Dafault-Spalte "Speicher" im Task-Manager stellt tatsächlich den privaten Arbeitssatz dar, nicht den Arbeitssatz von Powershell, der privaten und gemeinsam genutzten Speicher für andere Prozesse darstellt. Aktivieren Sie einfach die Spalte "Arbeitsspeicher" im Task-Manager und sie stimmt überein.

Task Manager

Offensichtlich sind die Werte in Powershell in Byte und müssen in Mb berechnet werden.

Diese Seite war auch hilfreich:

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

esserafael
quelle
Um in MB zu berechnen, können Sie Folgendes tun: (Get-Process -Id 1234).WS/1MB (Ersetzen Sie 1234 durch die PID für den Prozess, an dem Sie interessiert sind.) Es scheint auch, dass es in den von Get-Process zurückgegebenen Objekten keine "Private Working Set" -Eigenschaft gibt.
Iszi
Das Arbeitssatz in PowerShell befindet sich standardmäßig in KB (zumindest auf meinem System) - nicht in Byte.
Iszi
Wenn du Ja wirklich Wenn Sie ein privates Arbeitsset in PowerShell wünschen, sieht es so aus, als ob jemand eine Lösung veröffentlicht hat Paketüberfluss . stackoverflow.com/q/13878927/477682
Iszi
2

Der (freigegebene) Arbeitssatz und der private Arbeitssatz sind zwei verschiedene Dinge.

Mehr Info Ein paar Worte zur Speichernutzung oder: Arbeitssatz vs. privater Arbeitssatz .

Um das Private Working Set über Get-Process in PowerShell zu erhalten, können Sie "PrivateMemorySize" verwenden:

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

Ƭᴇcʜιᴇ007
quelle