Use o Powershell para descobrir o que usa muita memória (no Windows de 64 bits)

6

Como descubro (no Powershell) que processo / o que mais usa a memória?

Editar: Estou tentando descobrir como usar o Powershell para descobrir o que está usando toda a memória física, caso o Gerenciador de Tarefas, etc., não explique por que toda a RAM física está esgotada. Ou seja Eu preciso identificar a memória usada pelos caches etc.

    
por Andrew J. Brehm 18.01.2010 / 17:00

3 respostas

7

Aqui está uma maneira de obter informações sobre os processos em execução no momento e classificar por tamanho do conjunto de trabalho

Get-Process | Sort-Object -Descending WS

Atribua a saída a uma variável e ela lhe dará uma matriz dos resultados, então você pode simplesmente escrever o primeiro membro da matriz (que nesse caso será um objeto System.Diagnostics.Process ).

$ProcessList = Get-Process | Sort-Object -Descending WS
Write-Host $ProcessList[0].Handle "::" $Process.ProcessName "::" $Process.WorkingSet

Aqui está outro script rápido e sujo para despejar alguns itens de dados da lista de processos atualmente em execução usando o provedor Win32_Process do WMI:

$ProcessList = Get-WmiObject Win32_Process -ComputerName mycomputername
foreach ($Process in $ProcessList) {
    write-host $Process.Handle "::" $Process.Name "::" $Process.WorkingSetSize
}

Isso listará o PID (handle), o nome do processo e o tamanho atual do conjunto de trabalho. Você pode alterar isso usando propriedades diferentes da classe de processo WMI .

    
por 18.01.2010 / 17:22
1

Um forro para encontrar o nome do seu processo de uso de memória mais alto

Get-Process | Sort-Object -Descending WS | select -first 1 | select -ExpandProperty ProcessName
    
por 12.07.2016 / 22:57
-2
$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;
    
por 12.07.2016 / 22:48