プロパティの値を素早く調べる(Quick search of property value)

全てのプロパティに対して名前と値を同時に確認する

オブジェクトが持つプロパティの名前は「get-member」で簡単に調べられますが、各プロパティの値はすぐには調べられません。
PropertyGridの活用 - PowerShell Memoで紹介した「ObjectViewer」は、プロパティの名前と値が同時に確認できて非常に便利です。


今回紹介するのは、コンソールでプロパティの名前と値を同時に確認するスクリプトです。
引数として渡したオブジェクトが持つ全てのプロパティに対して、「名前」と「値」の両方を表示します。

get-PropertyValue.msh
PARAM([Object]$obj)

if($obj -ne $null)
{
    $obj | gm -MemberType Properties | `
        foreach {">>" + $_.Name + " : " + $obj.($_.Name)}
}
Exsample
MSH C:\> (ps)[15]

Handles  NPM(K)    PM(K)      WS(K) VS(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    490      31     7964       9080   108    10.70   1572 explorer

(ps)[15]は「Explorer」のプロセスです。
Explorer」のプロセスのプロパティを調べてみましょう。

MSH C:\> get-PropertyValue (ps)[15]
>>Handles : 490
>>Name : explorer
>>NPM : 31912
>>PM : 8155136
>>VS : 113668096
>>WS : 9297920
>>__NounName : Process
>>BasePriority : 8
>>Container :
>>EnableRaisingEvents : False
>>ExitCode :
>>ExitTime :
>>Handle : 2864
>>HandleCount : 490
>>HasExited : False
>>Id : 1572
>>MachineName : .
>>MainModule : System.Diagnostics.ProcessModule (Explorer.EXE)
>>MainWindowHandle : 131132
>>MainWindowTitle :
>>MaxWorkingSet : 1413120
>>MinWorkingSet : 204800
(省略)

プロパティの値が一望できて便利です。