【发布时间】:2023-04-09 16:31:01
【问题描述】:
在任务管理器中我们可以看到内存(私有工作集)。
我的问题是如何在 powershell 中获取进程的内存(私有工作集)?看图片 (https://i.stack.imgur.com/JQInb.jpg)
【问题讨论】:
-
看看
Get-Process|Get-Member
标签: windows powershell memory memory-management process
在任务管理器中我们可以看到内存(私有工作集)。
我的问题是如何在 powershell 中获取进程的内存(私有工作集)?看图片 (https://i.stack.imgur.com/JQInb.jpg)
【问题讨论】:
Get-Process|Get-Member
标签: windows powershell memory memory-management process
一种方法是这样的:
(Get-Counter "\Process(*)\Working Set - Private").CounterSamples
编辑:将值转换为 MB:
以下内容获取Get-Counter 的输出并按字母顺序对进程进行排序,然后创建一个将工作集值转换为 MB 的表:
(Get-Counter "\Process(*)\Working Set - Private").CounterSamples |
Sort-Object InstanceName |
Format-Table InstanceName, @{Label="PrivateWorkingSet"; Expression={$_.CookedValue / 1MB}} -AutoSize
【讨论】:
为什么这不起作用?
get-process -Name iexplore | select name, @{Name="Private Working Set"; Expression = {(Get-Counter "\Process(*)\Working Set - Private").CounterSamples | Sort-Object InstanceName | Format-Table InstanceName, @{Label="PrivateWorkingSet"; Expression={$_.CookedValue / 1MB}} -AutoSize}}
【讨论】:
这应该可以工作
get-process -Name iexplore |
select name, @{Name = "Private Working Set"; Expression = {
$ProcessID = $_.ID; [math]::Round((gwmi Win32_PerfFormattedData_PerfProc_Process |
? {$_.IDprocess -eq $ProcessID }).WorkingSetPrivate / 1mb, 0)
}
}
【讨论】: