【问题标题】:How to get memory ( private working set ) of a process in powershell?如何在powershell中获取进程的内存(私有工作集)?
【发布时间】:2023-04-09 16:31:01
【问题描述】:

在任务管理器中我们可以看到内存(私有工作集)。

我的问题是如何在 powershell 中获取进程的内存(私有工作集)?看图片 (https://i.stack.imgur.com/JQInb.jpg)

【问题讨论】:

  • 看看Get-Process|Get-Member

标签: windows powershell memory memory-management process


【解决方案1】:

一种方法是这样的:

(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

【讨论】:

  • Thnx..这就是我想要的.. 一个问题,我怎样才能将其转换为 Kb 或 Mb?
  • @RahulhAs,我编辑了我的答案,以展示如何使用 MB 中的工作集获取表格。将 'MB' 换成 'KB' 以千字节显示。
  • 谢谢。这将节省我在办公室的一天
  • @RahulhAs,请随时接受它作为答案:-)
【解决方案2】:

为什么这不起作用?

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}}

【讨论】:

    【解决方案3】:

    这应该可以工作

    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)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      • 2013-03-25
      • 1970-01-01
      • 2011-02-06
      • 2014-09-13
      • 1970-01-01
      相关资源
      最近更新 更多