出力オブジェクトを拡張する
コマンドレット、関数、スクリプトによって返される .NET Framework オブジェクトは、型ファイル (.ps1xml
) を使用して拡張できます。 型ファイルは、既存のオブジェクトにプロパティとメソッドを追加できる XML ベースのファイルです。 たとえば、Windows PowerShell には Types.ps1xml ファイルが用意されており、複数の既存の .NET Framework オブジェクトに要素が追加されます。
Types.ps1xml
ファイルは、Windows PowerShell インストール ディレクトリ ($PSHOME
) にあります。 独自の型ファイルを作成して、それらのオブジェクトをさらに拡張したり、他のオブジェクトを拡張したりできます。 型ファイルを使用してオブジェクトを拡張すると、オブジェクトのすべてのインスタンスが新しい要素で拡張されます。
System.Array オブジェクトの拡張
次の例は、Windows PowerShell が Types.ps1xml ファイル内の System.Array オブジェクトを拡張する方法を示しています。 既定では、System.Array オブジェクトには、配列内のオブジェクトの数を一覧表示する Length
プロパティがあります。 ただし、"length" という名前ではプロパティが明確に記述されないため、Windows PowerShell では、Count
エイリアス プロパティが追加され、Length
プロパティと同じ値が表示されます。 次の XML は、System.Array 型に Count
プロパティを追加します。
<Type>
<Name>System.Array</Name>
<Members>
<AliasProperty>
<Name>Count</Name>
<ReferencedMemberName>Length</ReferencedMemberName>
</AliasProperty>
</Members>
</Type>
この新しいエイリアス プロパティを表示するには、次の例に示すように、任意の配列で Get-Member コマンドを使用します。
Get-Member -InputObject (1,2,3,4)
このコマンドは、次の結果を返します。
Name MemberType Definition
---- ---------- ----------
Count AliasProperty Count = Length
Address Method System.Object& Address(Int32 )
Clone Method System.Object Clone()
CopyTo Method System.Void CopyTo(Array array, Int32 index):
Equals Method System.Boolean Equals(Object obj)
Get Method System.Object Get(Int32 )
...
Length Property System.Int32 Length {get;}
Count
プロパティまたは Length
プロパティを使用して、配列内のオブジェクトの数を確認できます。 次に例を示します。
PS> (1, 2, 3, 4).Count
4
PS> (1, 2, 3, 4).Length
4
カスタム型ファイル
カスタム型ファイルを作成するには、まず既存の型ファイルをコピーします。 新しいファイルには任意の名前を付けることができますが、.ps1xml
ファイル名拡張子が必要です。 ファイルをコピーするときは、Windows PowerShell からアクセスできる任意のディレクトリに新しいファイルを配置できますが、Windows PowerShell インストール ディレクトリ ($PSHOME
) またはインストール ディレクトリのサブディレクトリにファイルを配置すると便利です。
独自の拡張型をファイルに追加するには、拡張するオブジェクトごとに types 要素を追加します。 次のトピックでは、例を示します。
独自の拡張型を定義したら、次のいずれかの方法を使用して拡張オブジェクトを使用できるようにします。
- 拡張型ファイルを現在のセッションで使用できるようにするには、Update-TypeData コマンドレットを使用して新しいファイルを追加します。 他の型ファイル (Types.ps1xml ファイルを含む) で定義されている型よりも型を優先する場合は、Update-TypeData コマンドレットの
PrependData
パラメーターを使用します。 - 今後のすべてのセッションで拡張型ファイルを使用できるようにするには、型ファイルをモジュールに追加するか、現在のセッションをエクスポートするか、Update-TypeData コマンドを Windows PowerShell プロファイルに追加します。
署名の種類のファイル
XML にはスクリプト ブロックを含めることができるため、改ざんを防ぐために、型ファイルはデジタル署名する必要があります。 デジタル署名の追加の詳細については、about_Signing を参照してください。
こちらもご覧ください
オブジェクト の既定のプロパティを定義する
オブジェクト の既定のメソッドを定義する
オブジェクト の既定のメンバー セットを定義する
PowerShell