Sử dụng Powershell để tìm hiểu những gì sử dụng nhiều bộ nhớ (trên Windows 64 bit)


9

Làm cách nào để tìm hiểu (trong Powershell) quá trình / bất cứ điều gì sử dụng nhiều bộ nhớ nhất?

Chỉnh sửa: Tôi đang cố gắng tìm ra cách sử dụng Powershell để tìm hiểu những gì sử dụng tất cả bộ nhớ vật lý trong trường hợp Trình quản lý tác vụ, v.v. không giải thích được tại sao tất cả RAM vật lý được sử dụng hết. Tức là tôi cần xác định bộ nhớ được sử dụng bởi cache, v.v.


Bạn đang nghĩ đến loại cache nào?
squillman

Bộ nhớ cache trên đĩa ... Windows thường không thử sử dụng tất cả bộ nhớ vật lý có sẵn cho một cái gì đó hữu ích?
Andrew J. Brehm

Câu trả lời:


8

Đây là một cách để có được thông tin về các quy trình hiện đang chạy và sắp xếp theo kích thước Bộ làm việc

Get-Process | Sort-Object -Descending WS

Gán đầu ra đó cho một biến và nó sẽ cung cấp cho bạn một mảng kết quả, sau đó bạn có thể viết ra thành viên đầu tiên của mảng (trong trường hợp này sẽ là đối tượng System.Diagnostics.Process ).

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

Đây là một tập lệnh nhanh và bẩn khác để kết xuất một vài mục dữ liệu từ danh sách các quy trình hiện đang chạy bằng nhà cung cấp Win32_Process của WMI:

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

Điều đó sẽ liệt kê PID (xử lý), tên quy trình và kích thước tập làm việc hiện tại. Bạn có thể thay đổi điều đó bằng cách sử dụng các thuộc tính khác nhau của lớp Quy trình WMI .


Lỗi của tôi. Tôi đã không đủ rõ ràng. Câu hỏi được chỉnh sửa ...
Andrew J. Brehm

1

Một lớp lót để tìm tên của quá trình sử dụng bộ nhớ cao nhất của bạn

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;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.