オブジェクトのプロパティを拡張する

オブジェクトを拡張.NET Framework、エイリアス プロパティ、コード プロパティ、メモ プロパティ、スクリプト プロパティ、およびプロパティ セットをオブジェクトに追加できます。 これらのプロパティを定義する XML については、次のセクションで説明します。

注意

次のセクションの例は、PowerShell インストール ディレクトリ ( ) の既定 Types.ps1xml の型ファイルの例です $PSHOME 。 詳細については 、「About Types.ps1xml 」を参照してください

別名のプロパティ

エイリアス プロパティは、既存のプロパティの新しい名前を定義します。

次の例では 、Count プロパティSystem.Array 型に追加 されています。 AliasProperty 要素は、拡張プロパティをエイリアス プロパティとして定義します。 Name 要素は 、新しい名前を指定します。 また 、ReferencedMemberName 要素は、エイリアスによって参照される既存のプロパティを指定します。 要素を AliasProperty MemberSets 要素のメンバーに追加できます。

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

コードのプロパティ

コード プロパティは、オブジェクトの静的プロパティ.NET Frameworkします。

次の例では 、Mode プロパティが System.IO.DirectoryInfo 型に追加 されています。 CodeProperty 要素は、拡張プロパティをコード プロパティとして定義します。 Name 要素 は、拡張プロパティの名前を指定します。 また 、GetCodeReference 要素は、拡張プロパティによって参照される静的メソッドを定義します。 要素を CodeProperty MemberSets 要素のメンバーに追加できます。

<Type>
  <Name>System.IO.DirectoryInfo</Name>
  <Members>
    <CodeProperty>
      <Name>Mode</Name>
      <GetCodeReference>
        <TypeName>Microsoft.PowerShell.Commands.FileSystemProvider</TypeName>
        <MethodName>Mode</MethodName>
      </GetCodeReference>
    </CodeProperty>
  </Members>
</Type>

プロパティへの注記

note プロパティは、静的な値を持つプロパティを定義します。

次の例では、 が常に Success の Status プロパティが System.IO.DirectoryInfo 型に追加されています。 NoteProperty 要素は、拡張プロパティを note プロパティとして定義します。 Name 要素 は、拡張プロパティの名前を指定します。 Value 要素 は、拡張プロパティの静的な値を指定します。 要素 NoteProperty、MemberSets 要素のメンバーに追加できます。

<Type>
  <Name>System.IO.DirectoryInfo</Name>
  <Members>
    <NoteProperty>
      <Name>Status</Name>
      <Value>Success</Value>
    </NoteProperty>
  </Members>
</Type>

スクリプト プロパティ

スクリプト プロパティは、値がスクリプトの出力であるプロパティを定義します。

次の例では 、VersionInfo プロパティSystem.IO.FileInfo 型に追加 されています。 ScriptProperty 要素は、拡張プロパティをスクリプト プロパティとして定義します。 Name 要素 は、拡張プロパティの名前を指定します。 また 、GetScriptBlock 要素 は、プロパティ値を生成するスクリプトを指定します。 要素を ScriptProperty MemberSets 要素のメンバーに追加できます。

<Type>
  <Name>System.IO.FileInfo</Name>
  <Members>
    <ScriptProperty>
      <Name>VersionInfo</Name>
      <GetScriptBlock>
        [System.Diagnostics.FileVersionInfo]::GetVersionInfo($this.FullName)
      </GetScriptBlock>
    </ScriptProperty>
  </Members>
</Type>

プロパティ セット

プロパティ セットは、セットの名前で参照できる拡張プロパティのグループを定義します。 たとえば、Format-Table Property パラメーター では、表示する特定のプロパティ セットを指定できます。 プロパティ セットを指定すると、そのセットに属するプロパティだけが表示されます。

オブジェクトに対して定義できるプロパティ セットの数に制限はありません。 ただし、オブジェクトの既定の表示プロパティを定義するために使用するプロパティ セットは 、PSStandardMembers メンバー セット内で指定する必要があります。 型ファイルの既定のプロパティ セット名には Types.ps1xml 、DefaultDisplayProperty、DefaultDisplayPropertySet、DefaultKeyPropertySet が 含まれますPSStandardMembers メンバー セットに追加する追加のプロパティ セットは無視されます。

次の例では 、DefaultDisplayPropertySet プロパティ セットが System.Serviceprocess.Servicecontroller型の PSStandardMembers メンバー セットに追加されています。 PropertySet 要素は、プロパティのグループを定義します。 Name 要素 は、プロパティ セットの名前を指定します。 また 、ReferencedProperties 要素は 、セットのプロパティを指定します。 また、 要素を PropertySet Type 要素のメンバーに 追加 できます。

<Type>
  <Name>System.ServiceProcess.ServiceController</Name>
  <Members>
    <MemberSet>
      <Name>PSStandardMembers</Name>
      <Members>
        <PropertySet>
           <Name>DefaultDisplayPropertySet</Name>
           <ReferencedProperties>
            <Name>Status</Name
            <Name>Name</Name>
            <Name>DisplayName</Name>
          </ReferencedProperties>
        </PropertySet>
      </Members>
    </MemberSet>
  </Members>
</Type>

関連項目

Types.ps1xml について

System.Management.Automation

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