Використовуйте Powershell, щоб дізнатися, що використовує багато пам’яті (у 64-бітовій Windows)


9

Як я дізнаюся (у Powershell), який процес / що використовує найбільше пам'яті?

Редагувати: Я намагаюся розібратися, як використовувати Powershell, щоб дізнатися, для чого використовується вся фізична пам'ять у випадку, якщо диспетчер завдань тощо не зможе пояснити, чому використовується вся фізична ОЗУ. Тобто мені потрібно виявити пам'ять, яку використовують кеші тощо.


Про який кеш ви думаєте?
шквал

Дисковий кеш ... Невже Windows зазвичай не намагається використовувати всю наявну фізичну пам'ять для чогось корисного?
Ендрю Дж. Брем

Відповіді:


8

Ось спосіб отримати інформацію про поточно запущені процеси та сортувати за розміром робочого набору

Get-Process | Sort-Object -Descending WS

Призначте цей вихід змінній, і він дасть вам масив результатів, тоді ви можете просто виписати перший член масиву (який у цьому випадку буде об’єктом System.Diagnostics.Process ).

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

Ось ще один швидкий і брудний сценарій для скидання кількох елементів даних зі списку поточно запущених процесів за допомогою постачальника Win32_Process WMI:

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

Тут буде вказано PID (ручку), ім'я процесу та поточний розмір робочого набору. Ви можете змінити це за допомогою різних властивостей класу Process WMI .


Моє ліжко. Я був недостатньо зрозумілий. Питання відредаговано ...
Andrew J. Brehm

1

Один лайнер, щоб знайти ім’я вашого найвищого процесу використання пам'яті

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;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.