次の方法で共有


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

コマンドレット、関数、スクリプトによって返される .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 を参照してください。

こちらもご覧ください

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

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

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

Windows PowerShell コマンドレット の作成