Usa Powershell per scoprire cosa utilizza molta memoria (su Windows a 64 bit)


9

Come faccio a sapere (in Powershell) quale processo / qualunque cosa usi più memoria?

Modifica: sto cercando di capire come usare Powershell per scoprire cosa sta usando tutta la memoria fisica nel caso in cui Task Manager ecc. Non riesca a spiegare perché tutta la RAM fisica è esaurita. Cioè ho bisogno di identificare la memoria utilizzata dalle cache ecc.


A che tipo di cache stai pensando?
Squillman,

Cache disco ... Di solito Windows non tenta di utilizzare tutta la memoria fisica disponibile per qualcosa di utile?
Andrew J. Brehm,

Risposte:


8

Ecco un modo per ottenere informazioni sui processi attualmente in esecuzione e ordinarli per dimensione del working set

Get-Process | Sort-Object -Descending WS

Assegna quell'output a una variabile e ti darà una matrice dei risultati, quindi puoi semplicemente scrivere il primo membro della matrice (che in questo caso sarà un oggetto System.Diagnostics.Process ).

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

Ecco un altro script veloce e sporco per scaricare alcuni elementi di dati dall'elenco dei processi attualmente in esecuzione utilizzando il provider Win32_Process di WMI:

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

Verranno elencati il ​​PID (handle), il nome del processo e l'attuale dimensione del set di lavoro. È possibile modificarlo utilizzando diverse proprietà della classe Process WMI .


Colpa mia. Non ero abbastanza chiaro. Domanda modificata ...
Andrew J. Brehm,

1

Una riga per trovare il nome del processo di utilizzo della memoria più elevato

Get-Process | Sort-Object -Descending WS | select -first 1 | select -ExpandProperty ProcessName

0
$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;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.