Compartilhar via


Extending Properties for Objects (Expandir Propriedades para Objetos)

Ao estender objetos do .NET Framework, você pode adicionar propriedades de alias, propriedades de código, propriedades de nota, propriedades de script e conjuntos de propriedades aos objetos. O XML que define essas propriedades é descrito nas seções a seguir.

Observação

Os exemplos nas seções a seguir são do arquivo de tipos de Types.ps1xml padrão no diretório de instalação do PowerShell ($PSHOME). Para obter mais informações, consulte Sobre Types.ps1xml.

Propriedades de alias

Uma propriedade alias define um novo nome para uma propriedade existente.

No exemplo a seguir, a propriedade Count é adicionada ao tipo de System.Array. O elemento AliasProperty define a propriedade estendida como uma propriedade alias. O elemento Name especifica o novo nome. Além disso, o elemento ReferencedMemberName especifica a propriedade existente que é referenciada pelo alias. Você também pode adicionar o elemento AliasProperty aos membros do elemento MemberSets.

<Type>
  <Name>System.Array</Name>
  <Members>
    <AliasProperty>
      <Name>Count</Name>
      <ReferencedMemberName>Length</ReferencedMemberName>
    </AliasProperty>
  </Members>
</Type>

Propriedades do código

Uma propriedade de código faz referência a uma propriedade estática de um objeto .NET Framework.

No exemplo a seguir, a propriedade Mode é adicionada ao tipo de System.IO.DirectoryInfo. O CodeProperty elemento define a propriedade estendida como uma propriedade code. O elemento Name especifica o nome da propriedade estendida. E, o GetCodeReference elemento define o método estático que é referenciado pela propriedade estendida. Você também pode adicionar o elemento CodeProperty aos membros do elemento 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>

Propriedades da nota

Uma propriedade note define uma propriedade que tem um valor estático.

No exemplo a seguir, a propriedade Status, cujo valor é sempre Success, é adicionada ao tipo de System.IO.DirectoryInfo. O elemento NoteProperty define a propriedade estendida como uma propriedade note. O elemento Name especifica o nome da propriedade estendida. O elemento Value especifica o valor estático da propriedade estendida. O elemento NoteProperty também pode ser adicionado aos membros do elemento MemberSets.

<Type>
  <Name>System.IO.DirectoryInfo</Name>
  <Members>
    <NoteProperty>
      <Name>Status</Name>
      <Value>Success</Value>
    </NoteProperty>
  </Members>
</Type>

Propriedades do script

Uma propriedade de script define uma propriedade cujo valor é a saída de um script.

No exemplo a seguir, a propriedade VersionInfo é adicionada ao tipo de System.IO.FileInfo. O elemento ScriptProperty define a propriedade estendida como uma propriedade de script. O elemento Name especifica o nome da propriedade estendida. Além disso, o elemento GetScriptBlock especifica o script que gera o valor da propriedade. Você também pode adicionar o elemento ScriptProperty aos membros do elemento MemberSets.

<Type>
  <Name>System.IO.FileInfo</Name>
  <Members>
    <ScriptProperty>
      <Name>VersionInfo</Name>
      <GetScriptBlock>
        [System.Diagnostics.FileVersionInfo]::GetVersionInfo($this.FullName)
      </GetScriptBlock>
    </ScriptProperty>
  </Members>
</Type>

Conjuntos de propriedades

Um conjunto de propriedades define um grupo de propriedades estendidas que podem ser referenciadas pelo nome do conjunto. Por exemplo, o parâmetro Format-TableProperty pode especificar um conjunto de propriedades específico a ser exibido. Quando um conjunto de propriedades é especificado, somente as propriedades que pertencem ao conjunto são exibidas.

Não há restrição quanto ao número de conjuntos de propriedades que podem ser definidos para um objeto. No entanto, os conjuntos de propriedades usados para definir as propriedades de exibição padrão de um objeto devem ser especificados dentro do PSStandardMembers conjunto de membros. No arquivo de tipos Types.ps1xml, os nomes do conjunto de propriedades padrão incluem DefaultDisplayProperty , DefaultDisplayPropertySete DefaultKeyPropertySet. Todos os conjuntos de propriedades adicionais que você adicionar ao PSStandardMembers conjunto de membros serão ignorados.

No exemplo a seguir, o conjunto de propriedades DefaultDisplayPropertySet é adicionado ao conjunto de membros PSStandardMembers do tipo de System.ServiceProcess.ServiceController. O elemento PropertySet define o grupo de propriedades. O elemento Name especifica o nome do conjunto de propriedades. Além disso, o elemento ReferencedProperties especifica as propriedades do conjunto. Você também pode adicionar o elemento PropertySet aos membros do elemento 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>

Ver também

Sobre o Types.ps1xml

System.Management.Automation

Escrevendo um cmdlet do Windows PowerShell