共用方式為


擴充輸出物件

您可以使用類型檔案來擴充 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

另請參閱

定義對象的預設屬性

定義物件的預設方法

定義對象的預設成員集

撰寫 Windows PowerShell Cmdlet