出力オブジェクトを拡張する

型ファイル (types.ps1xml) を使用して、コマンドレット、関数、およびスクリプトによって返される .NET Framework オブジェクトを拡張できます。 型ファイルは、既存のオブジェクトにプロパティとメソッドを追加できる XML ベースのファイルです。 たとえば、Windows PowerShell には types.ps1xml ファイルが用意されています。これにより、いくつかの既存の .NET Framework オブジェクトに要素が追加されます。 types.ps1xml ファイルは、Windows PowerShell インストールディレクトリ () にあり $pshome ます。 独自の型ファイルを作成して、それらのオブジェクトをさらに拡張したり、他のオブジェクトを拡張したりすることができます。 型ファイルを使用してオブジェクトを拡張すると、そのオブジェクトのすべてのインスタンスが新しい要素で拡張されます。

System.string オブジェクトの拡張

次の例は、types.ps1xml ファイル内のsystem.string オブジェクトをWindows PowerShell 拡張する方法を示しています。 既定では、 system.string オブジェクトに は、 Length 配列内のオブジェクトの数を一覧表示するプロパティがあります。 ただし、名前 "length" によってプロパティが明確に記述されていないため、Windows PowerShell はエイリアスプロパティを追加します。このプロパティには、 Count プロパティと同じ値が表示され Length ます。 次の XML は、 Count プロパティを system.string 型に追加 します

<Type>
  <Name>System.Array</Name>
  <Members>
    <AliasProperty>
      <Name>Count</Name>
      <ReferencedMemberName>Length</ReferencedMemberName>
    </AliasProperty>
  </Members>
</Type>

この新しいエイリアスプロパティを表示するには、次の例に示すように、任意の配列で Get メンバー コマンドを使用します。

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

カスタム型ファイル

カスタム型ファイルを作成するには、まず既存の型ファイルをコピーします。 新しいファイルには任意の名前を付けることができますが、ファイル名の拡張子は types.ps1xml である必要があります。 ファイルをコピーすると、Windows PowerShell にアクセスできる任意のディレクトリに新しいファイルを配置できますが、ファイルを Windows PowerShell インストールディレクトリ ( $pshome ) またはインストールディレクトリのサブディレクトリに配置すると便利です。

独自の拡張型をファイルに追加するには、拡張する各オブジェクトの types 要素を追加します。 次のトピックでは例を紹介します。

  • プロパティとプロパティセットの追加の詳細については、「拡張プロパティ」を参照してください。

  • メソッドの追加の詳細については、「 拡張メソッド」を参照してください。

  • メンバーセットの追加の詳細については、「 拡張メンバーセット」を参照してください。

独自の拡張型を定義したら、次のいずれかの方法を使用して拡張オブジェクトを使用できるようにします。

  • 拡張型ファイルを現在のセッションで使用できるようにするには、 更新-TypeData コマンドレットを使用して、新しいファイルを追加します。 型を他の型のファイル (types.ps1xml ファイルを含む) で定義されている型よりも優先する場合は、 PrependData 更新-typedata コマンドレットのパラメーターを使用します。
  • 拡張型ファイルを今後のすべてのセッションで使用できるようにするには、モジュールに型ファイルを追加するか、現在のセッションをエクスポートするか、または Windows PowerShell プロファイルに更新-typedataコマンドを追加します。

署名の種類ファイル

XML にはスクリプトブロックを含めることができるため、改ざんを防ぐために型ファイルをデジタル署名する必要があります。 デジタル署名の追加の詳細については、「」を参照してください about_Signing

参照

オブジェクトの既定のプロパティの定義

オブジェクトの既定のメソッドを定義する

オブジェクトの既定のメンバー セットを定義する

Windows PowerShell コマンドレットの記述