扩展对象的属性

扩展 .NET Framework 对象时,可以向对象添加别名属性、代码属性、注释属性、脚本属性和属性集。 以下各节介绍了定义这些属性的 XML。

注释

以下部分中的示例来自 PowerShell 安装目录中的默认 Types.ps1xml 类型文件($PSHOME)。 有关详细信息,请参阅 关于 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>

注意属性

注释属性定义具有静态值的属性。

在以下示例中,Status 属性(其值始终 Success)添加到 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 元素指定生成属性值的脚本。 还可以将 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属性 参数可以指定要显示的特定属性集。 指定属性集时,仅显示属于该集的属性。

对于可以为对象定义的属性集数没有限制。 但是,必须在 PSStandardMembers 成员集中指定用于定义对象的默认显示属性的属性集。 在 Types.ps1xml 类型文件中,默认属性集名称包括 defaultDisplayProperty DefaultDisplayPropertySetDefaultKeyPropertySet。 将忽略添加到 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>

另请参阅

About Types.ps1xml

System.Management.Automation

编写 Windows PowerShell Cmdlet