扩展 .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 、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>