前回の続きです。
今回はまずオブジェクト書式設定ファイルの各要素について説明します。
myfilesystem.format.ps1xml
1: <?xml version="1.0" encoding="utf-8" ?>
2: <Configuration>
3: <SelectionSets>
4: <SelectionSet>
5: <Name>FileSystemTypes<Name>
6: <Types>
7: <TypeName>System.IO.DirectoryInfo</TypeName>
8: <TypeName>System.IO.FileInfo</TypeName>
9: </Types>
10: </SelectionSet>
11: </SelectionSets>
12:
13: <ViewDefinitions>
14: <View>
15: <Name>children</Name>
16: <ViewSelectedBy>
17: <SelectionSetName>FileSystemTypes</SelectionSetName>
18: </ViewSelectedBy>
19: <TableControl>
20: <TableHeaders>
21: <TableColumnHeader />
22: <TableHeaders>
23: <TableRowEntries>
24: <TableRowEntry>
25: <TableColumnItems>
26: <TableColumnItem>
27: <PropertyName>Name</PropertyName>
28: </TableColumnItem>
29: </TableColumnItems>
30: </TableRowEntry>
31: </TableRowEntries>
32: </TableControl>
33: </View>
34: </ViewDefinitions>
35: </Configuration>
1行目はこのファイルがXML文書であることを表す宣言なので必ず必要になります。
2行目から「Configuration」というルート要素が始まります。この下にオブジェクトの書式を記述していくことになります。
3行目からは「SelectionSets」という要素があり、これは「SelectionSet」をまとめるための要素になります。
SelectionSet
「SelectionSet」要素は書式を設定する型を指定するための要素です。
設定できる要素として、
があります。
「Name」要素ではSelectionSetの名前(識別子)を指定します。
「Types」要素は「TypeName」をまとめる要素です。「TypeName」要素には型名を指定します。
ここでは「System.IO.FileInfo」型と「System.IO.DirectoryInfo」型を書式設定の対象の型として、「FileSystemTypes」という識別子を設定しています。
13行目からは「ViewDefinitions」という要素があり、これは「View」要素をまとめる要素になります。
View
「View」要素は実際の書式設定を指定するための要素です。
設定できる要素として、
- Name
- ViewSelectedBy
- TableControl
があります。
「Name」要素ではViewの名前を指定します。
「ViewSelectedBy」要素は「SelectionSetName」をまとめる要素です。「SelectionSetName」要素にはこの書式設定を適用する対象のSelectionSetの名前を指定します。
ここでは、先程定義してあった「FileSystemTypes」が指定されています。
「TableControl」要素はオブジェクトをテーブル状に書式設定するための指定を行うための要素です。この他に「ListControl」というリスト状に書式設定する要素も用意されています。
では、もう一度このオブジェクト書式設定ファイルを適用したことによって、コンソールへの出力がどのように変更されたか見てみましょう。
PS > dir
Name
----
Documents and Settings
Inetpub
Program Files
temp
user
WINDOWS
AUTOEXEC.BAT
CONFIG.SYS
「Name」という列だけが表示されています。
これは26行目から28行目で「TableColumnItem」要素で「PropertyName」に「Name」と指定されているからです。
では、これ以外のプロパティを表示するにはどうすればいいでしょうか?それには単純に以下のようにします。
19: <TableControl>
20: <TableHeaders>
21: <TableColumnHeader />
22: <TableColumnHeader />
23: <TableHeaders>
24: <TableRowEntries>
25: <TableRowEntry>
26: <TableColumnItems>
27: <TableColumnItem>
28: <PropertyName>Name</PropertyName>
29: </TableColumnItem>
30: <TableColumnItem>
31: <PropertyName>Length</PropertyName>
32: </TableColumnItem>
33: </TableColumnItems>
34: </TableRowEntry>
35: </TableRowEntries>
36: </TableControl>
22行目に「TableColumnHeader」要素を追加しています。この要素は表示する列(プロパティ)の数だけ必要になります。
30行目から32行目に「TableColumnItem」要素を追加し、「PropertyName」に「Length」と指定しています。
この書式設定を適用すると出力は以下のようになります。
PS > dir
Name Length
---- ------
Documents and Settings
Inetpub
Program Files
temp
user
WINDOWS
AUTOEXEC.BAT 0
CONFIG.SYS 0
「Length」という列が追加されているの確認できるはずです。
次は列名が英語で表示されているので、これを日本語に変えてみます。
20: <TableHeaders>
21: <TableColumnHeader>
22: <Label>名前<Label>
23: <TableColumnHeader>
24: <TableColumnHeader>
25: <Label>ファイルサイズ<Label>
26: <TableColumnHeader>
27: <TableHeaders>
列名を変更するには「TableColumnHeader」要素に「Label」要素を指定します。
このようにして、オブジェクト書式設定ファイルを使うとオブジェクトの表示形式をある程度自由にカスタマイズすることができます。
この他にも色々なカスタマイズが可能なので詳しくは以下のURLの記事を参考にして下さい。