オブジェクトのView定義(1)

「get-process」のプロパティは8つしかない?

Monadを起動し

get-process

と入力すると以下のような結果が表示されます。

Handles  NPM(K)    PM(K)      WS(K) VS(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    274      16    14460      22196   153     6.27   2396 B2
    128       4     2352       9456    34     0.34    636 BsCLiP
     83       6     2080       2952    71     0.58   1508 clnch
(中略)

各プロセス毎に8つのプロパティが表示されます。
では「get-process」のプロパティは7つしかない…ということでしょうか?

「get-process」で取得されるオブジェクトの型を調べる
MSH C:\> (get-process)[0].gettype().fullname
System.Diagnostics.Process
「System.Diagnostics.Process」のプロパティを調べる
MSH C:\> get-process | get-member -membertype property

   TypeName: System.Diagnostics.Process

Name                MemberType Definition
----                ---------- ----------
BasePriority        Property   System.Int32 BasePriority {get;}
Container           Property   System.ComponentModel.IContainer Container {get;}
EnableRaisingEvents Property   System.Boolean EnableRaisingEvents {get;set;}
ExitCode            Property   System.Int32 ExitCode {get;}
ExitTime            Property   System.DateTime ExitTime {get;}
Handle              Property   System.IntPtr Handle {get;}
HandleCount         Property   System.Int32 HandleCount {get;}
(中略)

「get-process」で取得される「System.Diagnostics.Process」オブジェクトは、
50個以上のプロパティを持っていることが分かりました。


では、

get-process

と入力した時に、なぜ8つしかプロパティが表示されないのでしょうか?

オブジェクトのView定義

Monadでは、標準出力にオブジェクトが渡された際のプロパティなど、Viewの情報は「Format.mshxml」に定義します。


「Format.mshxml」には、

  • どのようなプロパティをどの順で表示するか
  • 表示名称、表示幅、アライメント

などを定義することができます。


「System.Diagnostics.Process」のViewは、Monadインストールディレクトリの「DotNetTypes.Format.mshxml」に定義されています。


今回はここまでです。
次回は、「DotNetTypes.Format.mshxml」のView定義を見てみましょう。