Powershellを使用して大量のメモリを使用しているものを見つける(64ビットWindowsの場合)


9

どのプロセス/何が最もメモリを使用しているのかを(Powershellで)どのように確認しますか?

編集:私は、Powershellを使用して、タスクマネージャーなどがすべての物理RAMが使い果たされた理由を説明できない場合にすべての物理メモリを使用しているものを見つける方法を理解しようとしています。つまり、キャッシュなどで使用されているメモリを特定する必要があります。


どのようなキャッシュを考えていますか?
squillman、2010年

ディスクキャッシュ... Windowsは通常、利用可能なすべての物理メモリを何か便利なものに使用しようとしないのでしょうか。
Andrew J. Brehm

回答:


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

WMIのWin32_Processプロバイダーを使用して、現在実行中のプロセスのリストからいくつかのデータ項目をダンプする別の迅速でダーティなスクリプトを次に示します。

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

PID(ハンドル)、プロセス名、現在のワーキングセットサイズが一覧表示されます。WMIプロセスクラスのさまざまなプロパティを使用して、これを変更できます。


私の悪い。はっきりしていませんでした。質問を編集しました...
Andrew J. Brehm

1

最高のメモリ使用プロセスの名前を見つけるための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;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.