擴充輸出物件
您可以使用類型檔案來擴充 Cmdlet、函式和腳本所傳回的 .NET Framework 物件(.ps1xml
)。 類型檔案是 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