次の方法で共有


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

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

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

別名のプロパティ

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

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

<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 要素は、拡張プロパティによって参照される静的メソッドを定義します。 MemberSets 要素のメンバーに CodeProperty 要素を追加することもできます。

<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 properties

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

次の例では、値が常に Success である Status プロパティが、System.IO.DirectoryInfo 型に追加されます。 NoteProperty 要素は、拡張プロパティをメモ プロパティとして定義します。 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 要素は、プロパティ値を生成するスクリプトを指定します。 MemberSets 要素のメンバーに ScriptProperty 要素を追加することもできます。

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

プロパティ セット

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

オブジェクトに対して定義できるプロパティ セットの数に制限はありません。 ただし、オブジェクトの既定の表示プロパティを定義するために使用するプロパティ セットは、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 コマンドレット の作成