Programm feine RAM-Auslastung aufzeichnen

Snooty

Commodore
Registriert
Dez. 2012
Beiträge
4.529
Hio,

gibt es ein Tool für Win 10x64, dass mir bspw. alle paar Sekunden in ein Logfile die aktuelle RAM-Auslastung und die jeweiligen Programme mit dem jeweiligen Speicherverbrauch schreibt?

Also quasi die normale Prozesse-Übersicht aus dem Taskmanager, wo es ja die Spalte mit dem Speicherverbrauch gibt, nur dass das eben mitgeloggt wird.

Evtl. bekommt man die Daten aus dem Taskmanager auch über die Eingabeaufforderung und könnte das mit ner Batch-Datei mitschreiben?

Den Perfmon hab ich angeguckt, aber nicht das was ich suche gefunden.
 
Danke, aber das läuft nicht (auch nicht die Variante aus dem ersten Beitrag); irgendwas passt mit dem $tag1 nicht:

Image 006.jpg


'Ne Idee, was da korrigiert werden muss? Ich dachte erst, ich muss da vielleicht meinen Computernamen einsetzen, aber damit kann er gleich gar nichts anfangen.

--

Okay, habe das Script gefunden - das läuft schon mal. Nun muss ich noch herausfinden, wie man das mitloggen kann:

Code:
$ProcArray = @()
$Processes = get-process | Group-Object -Property ProcessName
foreach($Process in $Processes)
{
    $prop = @(
            @{n='Count';e={$Process.Count}}
            @{n='Name';e={$Process.Name}}
            @{n='Memory';e={($Process.Group|Measure WorkingSet -Sum).Sum}}
            )
    $ProcArray += "" | select $prop  
}
$ProcArray | sort -Descending Memory | select Count,Name,@{n='Memory usage(Total)';e={"$(($_.Memory).ToString('N0'))Kb"}}
 
Zuletzt bearbeitet:
Ähm... Der Parameter heißt Computername. Weg lassen, dann gilts für die lokale Maschine. ;)

Umleiten kannst du es ganz normal wie in der Batch auch mittels > und >>.
Code:
cmdlet-abcdef -foo -bar > "ausgabe.txt"

Ggf. nutzt du das Cmdlet Out-File.
Code:
cmdlet-abcdef -foo -bar | Out-File "ausgabe.txt"
 
Ich hatte das obige Script jetzt so erweitert:
Code:
$ProcArray = @()
$Processes = get-process | Group-Object -Property ProcessName
foreach($Process in $Processes)
{
    $prop = @(
            @{n='Count';e={$Process.Count}}
            @{n='Name';e={$Process.Name}}
            @{n='Memory';e={($Process.Group|Measure WorkingSet -Sum).Sum}}
            )
    $ProcArray += "" | select $prop
    Write-Output "$prop"
}
$ProcArray | sort -Descending Memory | select Count,Name,@{n='Memory usage(Total)';e={"$(($_.Memory).ToString('N0'))Kb"}} | Out-File 'D:\log.txt'
Jetzt versuch ich noch, dass das ganze alle paar Sekunden einen neuen Eintrag in die Datei speichert - oder einfach eine neue Datei (1 Datei ist ca. 7 KB; da stören also auch ein paar hundert Dateien nicht).
 
Sieh dir mal das Cmdlet Start-Sleep an. Endlosschleife drum, fertig.
 
Zurück
Oben