擴充對象的屬性
當您擴充 .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>
注意屬性
note 屬性會定義具有靜態值的屬性。
在下列範例中,Status 屬性,其值一律 Success,會新增至 System.IO.DirectoryInfo 類型。
NoteProperty 元素會將擴充屬性定義為 note 屬性。
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-TableProperty 參數可以指定要顯示的特定屬性集。 指定屬性集時,只會顯示屬於集合的屬性。
對於可以針對物件定義的屬性集數目沒有任何限制。 不過,用來定義物件默認顯示屬性的屬性集必須在 PSStandardMembers 成員集內指定。 在 Types.ps1xml
類型檔案中,默認屬性集名稱包括 DefaultDisplayProperty、DefaultDisplayPropertySet,以及 DefaultKeyPropertySet。 您新增至 PSStandardMembers 成員集的任何其他屬性集,則會忽略。
在下列範例中,DefaultDisplayPropertySet 屬性集會新增至 System.ServiceProcess.ServiceController 類型的 PSStandardMemb ers 成員集。
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>