..png)
Wie finde ich (in Powershell) heraus, welcher Prozess/was auch immer den meisten Speicher verwendet?
Bearbeiten: Ich versuche herauszufinden, wie ich Powershell verwenden kann, um herauszufinden, was den gesamten physischen Speicher verwendet, falls Task-Manager usw. nicht erklären können, warum der gesamte physische RAM verwendet wird. D. h. ich muss den von Caches usw. verwendeten Speicher identifizieren.
Antwort1
Hier erfahren Sie, wie Sie Informationen zu aktuell laufenden Prozessen erhalten und nach der Größe des Arbeitssatzes sortieren können.
Get-Process | Sort-Object -Descending WS
Weisen Sie diese Ausgabe einer Variablen zu und Sie erhalten ein Array der Ergebnisse. Anschließend können Sie einfach das erste Mitglied des Arrays ausgeben (in diesem Fall einSystem.Diagnostics.ProcessObjekt).
$ProcessList = Get-Process | Sort-Object -Descending WS
Write-Host $ProcessList[0].Handle "::" $Process.ProcessName "::" $Process.WorkingSet
Hier ist ein weiteres schnelles und einfaches Skript zum Ausgeben einiger Datenelemente aus der Liste der aktuell laufenden Prozesse unter Verwendung des Win32_Process-Providers von WMI:
$ProcessList = Get-WmiObject Win32_Process -ComputerName mycomputername
foreach ($Process in $ProcessList) {
write-host $Process.Handle "::" $Process.Name "::" $Process.WorkingSetSize
}
Es werden die PID (Handle), der Prozessname und die aktuelle Workingset-Größe aufgelistet. Sie können dies mit verschiedenen Eigenschaften desWMI-Prozessklasse.
Antwort2
Einzeiler, um den Namen Ihres Prozesses mit der höchsten Speichernutzung zu finden
Get-Process | Sort-Object -Descending WS | select -first 1 | select -ExpandProperty ProcessName
Antwort3
$scripthost = Read-Host "Enter the Hostname of the Computer you would like to check Memory Statistics for"
""
""
"===========CPU - Top 10 Utilization List==========="
gwmi -computername $scripthost Win32_PerfFormattedData_PerfProc_Process| sort PercentProcessorTime -desc | select Name,PercentProcessorTime | Select -First 10 | ft -auto
"===========Memory - Top 10 Utilization List==========="
gwmi -computername $scripthost Win32_Process | Sort WorkingSetSize -Descending | Select Name,CommandLine,@{n="Private Memory(mb)";Expression = {[math]::round(($_.WorkingSetSize / 1mb), 2)}} | Select -First 10 | Out-String
#gwmi -computername $scripthost Win32_Process | Sort WorkingSetSize -Descending | Select Name,CommandLine,@{n="Private Memory(mb)";e={$_.WorkingSetSize/1mb}} | Select -First 10 | Out-String
#$fields = "Name",@{label = "Memory (MB)"; Expression = {[math]::round(($_.ws / 1mb), 2)}; Align = "Right"};
"===========Server Memory Information==========="
$fieldPercentage = @{Name = "Memory Percentage in Use (%)"; Expression = { “{0:N2}” -f ((($_.TotalVisibleMemorySize - $_.FreePhysicalMemory)*100)/ $_.TotalVisibleMemorySize)}};
$fieldfreeram = @{label = "Available Physical Memory (MB)"; Expression = {[math]::round(($_.FreePhysicalMemory / 1kb), 2)}};
$fieldtotalram = @{label = "Total Physical Memory (MB)"; Expression = {[math]::round(($_.TotalVisibleMemorySize / 1kb), 2)}};
$fieldfreeVram = @{label = "Available Virtual Memory (MB)"; Expression = {[math]::round(($_.FreeVirtualMemory / 1kb), 2)}};
$fieldtotalVram = @{label = "Total Virtual Memory (MB)"; Expression = {[math]::round(($_.TotalVirtualMemorySize /1kb), 2)}};
$memtotal = Get-WmiObject -Class win32_OperatingSystem -ComputerName $scripthost;
$memtotal | Format-List $fieldPercentage,$fieldfreeram,$fieldtotalram,$fieldfreeVram,$fieldtotalVram;