オブジェクトのView定義(1) - PowerShell Memoの続きです。
早速、「DotNetTypes.Format.mshxml」のView定義を見てみましょう。
.NETオブジェクトのView定義
.NETオブジェクトのView定義は「DotNetTypes.Format.mshxml」に定義されています。
場所は、
$MSHHOME\DotNetTypes.Format.mshxml
です。
「System.Diagnostics.Process」のView定義
「DotNetTypes.Format.mshxml」中に以下のような記述があるはずです。
<View>
<Name>process</Name>
<ViewSelectedBy>
<TypeName>System.Diagnostics.Process</TypeName>
<TypeName>Deserialized.System.Diagnostics.Process</TypeName>
</ViewSelectedBy>
<TableControl>
<TableHeaders>
<TableColumnHeader>
<Label>Handles</Label>
<Width>7</Width>
<Alignment>right</Alignment>
</TableColumnHeader>
<TableColumnHeader>
<Label>NPM(K)</Label>
<Width>7</Width>
<Alignment>right</Alignment>
</TableColumnHeader>
<TableColumnHeader>
<Label>PM(K)</Label>
<Width>8</Width>
<Alignment>right</Alignment>
</TableColumnHeader>
<TableColumnHeader>
<Label>WS(K)</Label>
<Width>10</Width>
<Alignment>right</Alignment>
</TableColumnHeader>
<TableColumnHeader>
<Label>VS(M)</Label>
<Width>5</Width>
<Alignment>right</Alignment>
</TableColumnHeader>
<TableColumnHeader>
<Label>CPU(s)</Label>
<Width>8</Width>
<Alignment>right</Alignment>
</TableColumnHeader>
<TableColumnHeader>
<Width>6</Width>
<Alignment>right</Alignment>
</TableColumnHeader>
<TableColumnHeader />
</TableHeaders>
<TableRowEntries>
<TableRowEntry>
<TableColumnItems>
<TableColumnItem>
<PropertyName>HandleCount</PropertyName>
</TableColumnItem>
<TableColumnItem>
<ScriptBlock>[int]($_.NPM / 1024)</ScriptBlock>
</TableColumnItem>
<TableColumnItem>
<ScriptBlock>[int]($_.PM / 1024)</ScriptBlock>
</TableColumnItem>
<TableColumnItem>
<ScriptBlock>[int]($_.WS / 1024)</ScriptBlock>
</TableColumnItem>
<TableColumnItem>
<ScriptBlock>[int]($_.VS / 1048576)</ScriptBlock>
</TableColumnItem>
<TableColumnItem>
<ScriptBlock>
if ($_.CPU -ne $())
{
$_.CPU.ToString("N")
}
</ScriptBlock>
</TableColumnItem>
<TableColumnItem>
<PropertyName>Id</PropertyName>
</TableColumnItem>
<TableColumnItem>
<PropertyName>ProcessName</PropertyName>
</TableColumnItem>
</TableColumnItems>
</TableRowEntry>
</TableRowEntries>
</TableControl>
</View>長いですね。(^^;
Viewの解説
TableControlタグでコンソール出力時の詳細なViewを定義します。
「TableHeadersタグ」がヘッダ部のView、「TableRowEntriesタグ」がプロパティ値のViewに対応します。
TableHeadersタグ
- TableHeaders
- TableColumnHeader
- Label:表示名
- Width:表示幅
- Alignment:アライメント(right/left)
- TableColumnHeader
この部分↓
Handles NPM(K) PM(K) WS(K) VS(M) CPU(s) Id ProcessName
TableRowEntriesタグ
- TableRowEntry
- TableColumnItems
- TableColumnItem
- PropertyName/ScriptBlock
- PropertyName/ScriptBlock
- TableColumnItem
- TableColumnItems
プロパティは以下の2つのパターンのどちらかを記述します。
- PropertyNameタグで記述したプロパティの値を表示する
- ScriptBlockタグで指定したScriptBlockの実行結果値を表示する
この部分↓
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