在Process Explorer中,它是 WS专用字节,而在Task Manager中,它是私有(private)工作集

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

编辑

Powershell脚本也可以。

最佳答案

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

[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

这是一个以进程名称为参数的版本。这可能返回多个值(对于流程的每个实例一个),并且您可以通过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

关于windows - 是否有命令行实用程序来显示WS专用字节?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13878927/

10-10 14:02