可以使用类型文件(.ps1xml
)扩展 cmdlet、函数和脚本返回的 .NET Framework 对象。 类型文件是基于 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 将 Count
属性添加到 System.Array 类型。
<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 cmdlet 添加新文件。 如果希望类型优先于其他类型的文件中定义的类型(包括 Types.ps1xml 文件),请使用 Update-TypeData cmdlet 的
PrependData
参数。 - 若要使扩展类型文件可供将来的所有会话使用,请将类型文件添加到模块、导出当前会话或将 Update-TypeData 命令添加到 Windows PowerShell 配置文件。
签名类型文件
类型文件应进行数字签名以防止篡改,因为 XML 可以包含脚本块。 有关添加数字签名的详细信息,请参阅 about_Signing