リスト ビューを作成する
リスト ビューには、データが 1 つの列に (順番に) 表示されます。 一覧に表示されるデータには、.NET プロパティの値またはスクリプトの値を指定できます。
リスト ビューの表示
次の出力は、Windows PowerShell System.Serviceprocess.Servicecontroller のプロパティを表示する方法を示しています。Get-Service コマンドレットによって返される Displayproperty=Fullnameオブジェクト。 この例では、3 つの オブジェクトが返されました。各オブジェクトは、前のオブジェクトから空白行で区切っています。
Get-Service | format-list
Name : AEADIFilters
DisplayName : Andrea ADI Filters Service
Status : Running
DependentServices : {}
ServicesDependedOn : {}
CanPauseAndContinue : False
CanShutdown : False
CanStop : True
ServiceType : Win32OwnProcess
Name : AeLookupSvc
DisplayName : Application Experience
Status : Running
DependentServices : {}
ServicesDependedOn : {}
CanPauseAndContinue : False
CanShutdown : False
CanStop : True
ServiceType : Win32ShareProcess
Name : AgereModemAudio
DisplayName : Agere Modem Call Progress Audio
Status : Running
DependentServices : {}
ServicesDependedOn : {}
CanPauseAndContinue : False
CanShutdown : False
CanStop : True
ServiceType : Win32OwnProcess
...
リスト ビューの定義
次の XML は、System.Serviceprocess.Servicecontroller のいくつかのプロパティを表示するためのリスト ビュー スキーマを示しています。Displayproperty=Fullname オブジェクト。 リスト ビューに表示する各プロパティを指定する必要があります。
<View>
<Name>System.ServiceProcess.ServiceController</Name>
<ViewSelectedBy>
<TypeName>System.ServiceProcess.ServiceController</TypeName>
</ViewSelectedBy>
<ListControl>
<ListEntries>
<ListEntry>
<ListItems>
<ListItem>
<PropertyName>Name</PropertyName>
</ListItem>
<ListItem>
<PropertyName>DisplayName</PropertyName>
</ListItem>
<ListItem>
<PropertyName>Status</PropertyName>
</ListItem>
<ListItem>
<PropertyName>ServiceType</PropertyName>
</ListItem>
</ListItems>
</ListEntry>
</ListEntries>
</ListControl>
</View>
リスト ビューを定義するには、次の XML 要素を使用します。
View 要素 は、リスト ビューの親要素です。 (これは、テーブル ビュー、ワイド コントロール ビュー、およびカスタム コントロール ビューの親要素と同じです)。
Name 要素 は、ビューの名前を指定します。 この要素は、すべてのビューに必要です。
ViewSelectedBy 要素は、ビューを使用するオブジェクトを定義します。 この要素は必須です。
GroupBy 要素は 、オブジェクトの新しいグループが表示される時間を定義します。 特定のプロパティまたはスクリプトの値が変更されるたびに、新しいグループが開始されます。 この要素は省略可能です。
Controls 要素は、リスト ビューによって定義されるカスタム コントロールを定義します。 コントロールを使用すると、データの表示方法をさらに指定できます。 この要素は省略可能です。 ビューでは、独自のカスタム コントロールを定義できます。また、書式設定ファイル内の任意のビューで使用できる共通コントロールを使用できます。 カスタム コントロールの詳細については、「カスタム コントロールの作成 」を参照してください。
ListControl 要素は、ビューに表示される項目と、その書式設定方法を定義します。 他のすべてのビューと同様に、リスト ビューには、スクリプトによって生成されたオブジェクト のプロパティまたは値の値を表示できます。
単純なリスト ビューを定義する完全な書式設定ファイルの例については、「リスト ビュー (基本)」 を参照してください。
リスト ビューの定義の提供
リスト ビューでは、ListControl 要素の子要素を使用して、1 つ以上の 定義を提供 できます。 通常、ビューの定義は 1 つのみです。 次の例では、System.Diagnostics.Process のいくつかのプロパティを表示する単一 の定義がビューに表示されますか?Displayproperty=Fullname オブジェクト。 リスト ビューには、プロパティの値またはスクリプトの値を表示できます (この例では示されません)。
<ListControl>
<ListEntries>
<ListEntry>
<ListItems>
<ListItem>
<PropertyName>Name</PropertyName>
</ListItem>
<ListItem>
<PropertyName>DisplayName</PropertyName>
</ListItem>
<ListItem>
<PropertyName>Status</PropertyName>
</ListItem>
<ListItem>
<PropertyName>ServiceType</PropertyName>
</ListItem>
</ListItems>
</ListEntry>
</ListEntries>
</ListControl>
リスト ビューの定義を提供するには、次の XML 要素を使用できます。
ListControl 要素とその子要素は、ビューに表示される項目を定義します。
ListEntries 要素は、ビューの定義を提供します。 ほとんどの場合、ビューの定義は 1 つのみです。 この要素は必須です。
ListEntry 要素は、ビューの定義を提供します。 少なくとも 1 つの ListEntry が 必要です。ただし、追加できる要素の数に上限はありません。 ほとんどの場合、ビューの定義は 1 つのみです。
EntrySelectedBy 要素は、特定の定義によって表示されるオブジェクトを指定します。 この要素は省略可能であり、異なるオブジェクトを表示 する複数の ListEntry 要素 を定義する場合にのみ必要です。
ListItems 要素は、リスト ビューの行に値が表示されるプロパティとスクリプトを指定します。
ListItem 要素は、リスト ビューの行に値が表示されるプロパティまたはスクリプトを指定します。 リスト ビューでは、少なくとも 1 つのプロパティまたはスクリプトを指定する必要があります。 指定できる行数に上限はありません。
PropertyName 要素は、行に値が表示されるプロパティを指定します。 プロパティまたはスクリプトを指定する必要がありますが、両方を指定することはできません。
ScriptBlock 要素は、行に値が表示されるスクリプトを指定します。 スクリプトまたはプロパティを指定する必要がありますが、両方を指定することはできません。
Label 要素は、行のプロパティまたはスクリプト値の左側に表示されるラベルを指定します。 この要素は省略可能です。 ラベルが指定されていない場合は、プロパティまたはスクリプトの名前が表示されます。 完全な例については、「リスト ビュー (ラベル)」を参照してください。
ItemSelectionCondition 要素は、表示する行に存在する必要がある条件を指定します。 リスト ビューに条件を追加する方法の詳細については、「データを表示するための 条件の定義」を参照してください。 この要素は省略可能です。
FormatString 要素は、プロパティまたはスクリプトの値を表示するために使用されるパターンを指定します。 この要素は省略可能です。
単純なリスト ビューを定義する完全な書式設定ファイルの例については、「リスト ビュー (基本)」 を参照してください。
リスト ビューを使用するオブジェクトの定義
リスト ビューを使用する .NET オブジェクトを定義するには、2 つの方法があります。 ViewSelectedBy要素を使用して、ビューのすべての定義で表示できるオブジェクトを定義できます。また、EntrySelectedBy要素を使用して、ビューの特定の定義によって表示されるオブジェクトを定義することもできます。 ほとんどの場合、ビューには定義が 1 つしか含めないので、オブジェクトは通常 、ViewSelectedBy 要素によって定義 されます。
次の例は 、ViewSelectedBy 要素と TypeName 要素を使用してリスト ビューで表示されるオブジェクトを定義 する方法を示 しています。 指定できる TypeName 要素の数に制限はありません。その順序は重要ではありません。
<View>
<Name>System.ServiceProcess.ServiceController</Name>
<ViewSelectedBy>
<TypeName>System.Diagnostics.Process</TypeName>
</ViewSelectedBy>
<ListControl>...</ListControl>
</View>
次の XML 要素を使用して、リスト ビューで使用されるオブジェクトを指定できます。
ViewSelectedBy 要素は、リスト ビューで表示されるオブジェクトを定義します。
TypeName 要素は、ビューによって表示される .NET オブジェクトを指定します。 完全修飾 .NET 型名が必要です。 ビューには少なくとも 1 つの種類または選択セットを指定する必要がありますが、指定できる要素の最大数はありません。
完全な書式設定ファイルの例については、「リスト ビュー (基本)」を参照してください。
次の例では 、ViewSelectedBy 要素と SelectionSetName 要素を使用 します。 リスト ビューとテーブル ビューを同じオブジェクトに対して定義する場合など、複数のビューを使用して表示されるオブジェクトの関連セットがある場合は、選択セットを使用します。 選択セットの作成方法の詳細については、「選択セットの 定義」を参照してください。
<View>
<Name>System.ServiceProcess.ServiceController</Name>
<ViewSelectedBy>
<SelectionSetName>.NET Type Set</SelectionSetName>
</ViewSelectedBy>
<ListControl>...</ListControl>
</View>
次の XML 要素を使用して、リスト ビューで使用されるオブジェクトを指定できます。
ViewSelectedBy 要素は、リスト ビューで表示されるオブジェクトを定義します。
SelectionSetName 要素は、ビューで表示できるオブジェクトのセットを指定します。 ビューには少なくとも 1 つの選択セットまたは種類を指定する必要がありますが、指定できる要素の最大数はありません。
次の例は、EntrySelectedBy 要素を使用して、リスト ビューの特定の定義によって表示されるオブジェクトを 定義する方法を示 しています。 この要素を使用すると、オブジェクトの .NET 型名、オブジェクトの選択セット、または定義をいつ使用するか指定する選択条件を指定できます。 選択条件を作成する方法の詳細については、「データを表示するための条件の 定義」を参照してください。
<ListEntry>
<EntrySelectedBy>
<TypeName>.NET Type</TypeName>
</EntrySelectedBy>
</ListEntry>
次の XML 要素を使用して、リスト ビューの特定の定義で使用されるオブジェクトを指定できます。
EntrySelectedBy 要素は、定義によって表示されるオブジェクトを定義します。
TypeName 要素は、定義によって表示される .NET オブジェクトを指定します。 この要素を使用する場合は、完全修飾 .NET 型名が必要です。 定義には、少なくとも 1 つの種類、選択セット、または選択条件を指定する必要がありますが、指定できる要素の最大数はありません。
SelectionSetName要素 (表示されません) は、この定義で表示できるオブジェクトのセットを指定します。 定義には、少なくとも 1 つの種類、選択セット、または選択条件を指定する必要がありますが、指定できる要素の最大数はありません。
SelectionCondition 要素(表示されません) は、この定義を使用するために存在する必要がある条件を指定します。 定義には、少なくとも 1 つの種類、選択セット、または選択条件を指定する必要がありますが、指定できる要素の最大数はありません。 選択条件の定義の詳細については、「データを表示するための 条件の定義」を参照してください。
リスト ビューでのオブジェクトのグループの表示
リスト ビューによって表示されるオブジェクトをグループに分割できます。 これは、特定のプロパティまたはスクリプトの値が変更されるたびに新Windows PowerShellグループを開始するグループのみを定義するという意味ではありません。 次の例では 、System.Serviceprocess.Servicecontroller.Servicetype プロパティの値が変更されるたびに新しいグループが開始されます。
<GroupBy>
<Label>Service Type</Label>
<PropertyName>ServiceType</PropertyName>
</GroupBy>
次の XML 要素は、グループの開始時間を定義するために使用されます。
GroupBy 要素は、新しいグループを開始するプロパティまたはスクリプトを定義し、グループの表示方法を定義します。
PropertyName要素は、値が変更されるたびに新しいグループを開始するプロパティを指定します。 グループを開始するには、プロパティまたはスクリプトを指定する必要がありますが、両方を指定することはできません。
ScriptBlock要素は、値が変更されるたびに新しいグループを開始するスクリプトを指定します。 グループを開始するには、スクリプトまたはプロパティを指定する必要がありますが、両方を指定することはできません。
Label要素は、各グループの先頭に表示されるラベルを定義します。 この要素で指定されたテキストに加えて、Windows PowerShell は新しいグループをトリガーした値を表示し、ラベルの前後に空白行を追加します。 この要素は省略可能です。
CustomControl要素は、データの表示に使用されるコントロールを定義します。 この要素は省略可能です。
CustomControlName要素は、データの表示に使用されるコモンコントロールまたはビューコントロールを指定します。 この要素は省略可能です。
グループを定義する完全な書式設定ファイルの例については、「 リストビュー (GroupBy)」を参照してください。
書式指定文字列の使用
書式設定文字列をビューに追加して、データの表示方法をさらに定義できます。 次の例は、プロパティの値の書式設定文字列を定義する方法を示して StartTime
います。
<ListItem>
<PropertyName>StartTime</PropertyName>
<FormatString>{0:MMM} {0:DD} {0:HH}:{0:MM}</FormatString>
</ListItem>
次の XML 要素を使用して、書式パターンを指定できます。
ListItem要素は、ビューによって表示されるデータを指定します。
PropertyName要素は、ビューによって表示される値を持つプロパティを指定します。 プロパティまたはスクリプトのどちらかを指定する必要がありますが、両方を指定することはできません。
FormatString要素は、プロパティまたはスクリプトの値をビューに表示する方法を定義する形式パターンを指定します。
ScriptBlock要素 (表示されません) は、ビューによって値が表示されるスクリプトを指定します。 スクリプトまたはプロパティのいずれかを指定する必要がありますが、両方を指定することはできません。
次の例では、 ToString
スクリプトの値の書式を設定するためにメソッドが呼び出されています。 スクリプトは、オブジェクトの任意のメソッドを呼び出すことができます。 したがって、オブジェクトに、書式設定パラメーターを持つなどのメソッドがある場合、 ToString
スクリプトはそのメソッドを呼び出してスクリプトの出力値を書式設定できます。
<ListItem>
<ScriptBlock>
[String]::Format("{0,-10} {1,-8}", $_.LastWriteTime.ToString("d"), $_.LastWriteTime.ToString("t"))
</ScriptBlock>
</ListItem>
次の XML 要素を使用して、メソッドを呼び出すことができ ToString
ます。
ListItem要素は、ビューによって表示されるデータを指定します。
ScriptBlock要素 (表示されません) は、ビューによって値が表示されるスクリプトを指定します。 スクリプトまたはプロパティのいずれかを指定する必要がありますが、両方を指定することはできません。
参照
Writing a Windows PowerShell Cmdlet (Windows PowerShell コマンドレットの記述)