オブジェクトのView定義(2)
オブジェクトの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