2

Process Explorerの用語では、 WS Private Bytesですが、タスクマネージャーの用語では、PrivateWorkingSetです。

コマンドラインユーティリティで、プロセス名を指定してこの情報を表示したいと思います。

編集

PowerShellスクリプトも同様に機能します。

4

1 に答える 1

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

[編集2]

これは、プロセス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

そして、これがプロセス名をパラメータとして取るバージョンです。これにより、複数の値(プロセスのインスタンスごとに1つ)が返される場合があり、の値によってプロセスを識別できます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
于 2012-12-14T12:58:37.760 に答える