.png)
¿Cómo puedo saber (en Powershell) qué proceso/lo que sea que utilice más memoria?
Editar: Estoy tratando de descubrir cómo usar Powershell para averiguar qué está usando toda la memoria física en caso de que el Administrador de tareas, etc. no pueda explicar por qué se agota toda la RAM física. Es decir, necesito identificar la memoria utilizada por las cachés, etc.
Respuesta1
A continuación se muestra una forma de obtener información sobre los procesos actualmente en ejecución y ordenarlos por tamaño del conjunto de trabajo.
Get-Process | Sort-Object -Descending WS
Asigne esa salida a una variable y le dará una matriz de los resultados, luego puede simplemente escribir el primer miembro de la matriz (que en este caso será unProceso.de.diagnóstico.del.sistemaobjeto).
$ProcessList = Get-Process | Sort-Object -Descending WS
Write-Host $ProcessList[0].Handle "::" $Process.ProcessName "::" $Process.WorkingSet
Aquí hay otro script rápido y sucio para volcar algunos elementos de datos de la lista de procesos actualmente en ejecución usando el proveedor Win32_Process de WMI:
$ProcessList = Get-WmiObject Win32_Process -ComputerName mycomputername
foreach ($Process in $ProcessList) {
write-host $Process.Handle "::" $Process.Name "::" $Process.WorkingSetSize
}
Eso enumerará el PID (identificador), el nombre del proceso y el tamaño del conjunto de trabajo actual. Puedes cambiar eso usando diferentes propiedades delClase de proceso WMI.
Respuesta2
Una línea para encontrar el nombre de su proceso de mayor uso de memoria
Get-Process | Sort-Object -Descending WS | select -first 1 | select -ExpandProperty ProcessName
Respuesta3
$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;