是否有一个命令行实用程序来显示WS专用字节?

mar*_*ark 2 memory windows

在Process Explorer术语中,它是WS Private Bytes,而在Task Manager术语中,它是Private Working Set.

我希望命令行实用程序在给定进程名称的情况下显示此信息.

编辑

PowerShell脚本也可以.

Ale*_*ici 7

PowerShell你可以使用:

[编辑]

function ProcessInfo
{
    param
    ([String]$processName)

    $workingSet = get-counter -counter "\Process($processName)\Working Set - Private" | select -expandproperty countersamples | select cookedvalue
    $privateBytes = get-counter -counter "\Process($processName)\Private Bytes" | select -expandproperty countersamples | select cookedvalue

    get-process $processName | select `
        name, `
        @{Name="Private Working Set"; Expression = {$workingSet.CookedValue}},`
        @{Name="WS Private Bytes"; Expression = {$privateBytes.CookedValue}}
}

ProcessInfo("winrar")
Run Code Online (Sandbox Code Playgroud)

[EDIT2]

这是一个改进版本,它将进程id作为参数.

function GetProcessInfoById
{
    param
    ([int]$processId)

    Get-WmiObject -class Win32_PerfFormattedData_PerfProc_Process | where{$_.idprocess -eq $processId} | select `
    @{Name="Process Id"; Expression = {$_.idprocess}},`
    @{Name="Counter Name"; Expression = {$_.name}},`
    @{Name="Private Working Set"; Expression = {$_.workingSetPrivate / 1kb}}        
}

GetProcessInfoById 380
Run Code Online (Sandbox Code Playgroud)

这是一个将进程名称作为参数的版本.这可能会返回多个值(每个进程实例一个),您可以按值识别进程Process Id.

function GetProcessInfoByName
{
    param
    ([string]$processName)

    Get-WmiObject -class Win32_PerfFormattedData_PerfProc_Process | where{$_.name -like $processName+"*"} | select `
    @{Name="Process Id"; Expression = {$_.idprocess}},`
    @{Name="Counter Name"; Expression = {$_.name}},`
    @{Name="Private Working Set"; Expression = {$_.workingSetPrivate / 1kb}}
}

GetProcessInfoByName svchost
Run Code Online (Sandbox Code Playgroud)

  • `WorkingSet`不是我需要的.`PrivateMemorySize`听起来像它,但它似乎对应于任务管理器中的**Commit Size**.再一次,不是我想要的.实际上,我没有在Process对象上看到任何返回**Private Working Set**的属性. (2认同)