Extending Output Objects (Expandir Objetos de Resultado)
Pode estender a .NET Framework objetos que são devolvidos por cmdlets, funções e scripts utilizando ficheiros de tipos (.ps1xml). Os ficheiros tipos são ficheiros baseados em XML que permitem adicionar propriedades e métodos aos objetos existentes. Por exemplo, Windows PowerShell fornece o ficheiro Types.ps1xml, que adiciona elementos a vários objetos .NET Framework existentes. O ficheiro Types.ps1xml está localizado no diretório de instalação Windows PowerShell ( $pshome
). Pode criar o seu próprio ficheiro de tipos para prolongar ainda mais esses objetos ou para estender outros objetos. Quando se estende um objeto utilizando um ficheiro tipo, qualquer instância do objeto é estendida com os novos elementos.
Ampliação do objeto System.Array
O exemplo a seguir mostra como Windows PowerShell estende o objeto System.Array no ficheiro Types.ps1xml. Por predefinição, os objetos System.Array têm uma Length
propriedade que lista o número de objetos na matriz. No entanto, como o nome "comprimento" não descreve claramente o imóvel, Windows PowerShell adiciona a Count
propriedade de alias, que exibe o mesmo valor que o Length
imóvel. O seguinte XML adiciona a Count
propriedade ao tipo System.Array.
<Type>
<Name>System.Array</Name>
<Members>
<AliasProperty>
<Name>Count</Name>
<ReferencedMemberName>Length</ReferencedMemberName>
</AliasProperty>
</Members>
</Type>
Para ver esta nova propriedade de pseudónimos, utilize um comando Get-Member em qualquer matriz, como mostra o exemplo seguinte.
Get-Member -InputObject (1,2,3,4)
O comando retorna os seguintes resultados.
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;}
Você pode usar a Count
propriedade ou a propriedade para determinar Length
quantos objetos estão em uma matriz. Por exemplo:
PS> (1, 2, 3, 4).Count
4
PS> (1, 2, 3, 4).Length
4
Ficheiros de tipos personalizados
Para criar um ficheiro de tipos personalizados, comece por copiar um ficheiro de tipos existente. O novo ficheiro pode ter qualquer nome, mas deve ter uma extensão de nome de ficheiro .ps1xml. Ao copiar o ficheiro, pode colocar o novo ficheiro em qualquer diretório acessível a Windows PowerShell, mas é útil colocar os ficheiros no diretório de instalação Windows PowerShell ( $pshome
) ou num subdiretório do diretório de instalação.
Para adicionar os seus próprios tipos estendidos ao ficheiro, adicione um elemento de tipo para cada objeto que pretende estender. Os seguintes tópicos dão exemplos.
Para obter mais informações sobre a adição de imóveis e conjuntos de propriedades, consulte Propriedades Estendidas
Para obter mais informações sobre a adição de métodos, consulte Métodos Estendidos.
Para obter mais informações sobre a adição de conjuntos de membros, consulte Conjuntos de Membros Alargados.
Depois de definir os seus próprios tipos estendidos, utilize um dos seguintes métodos para disponibilizar os seus objetos estendidos:
- Para disponibilizar o ficheiro dos seus tipos alargados à sessão atual, utilize o cmdlet Update-TypeData para adicionar o novo ficheiro. Se pretender que os seus tipos prevaleçam sobre os tipos definidos em outros tipos de ficheiros (incluindo o ficheiro Types.ps1xml), utilize o
PrependData
parâmetro do cmdlet Update-TypeData. - Para disponibilizar o ficheiro de tipos alargados a todas as sessões futuras, adicione o ficheiro dos tipos a um módulo, exporte a sessão atual ou adicione o comando Update-TypeData ao seu perfil de Windows PowerShell.
Ficheiros de tipos de assinatura
Os ficheiros de tipos devem ser assinados digitalmente para evitar a adulteração, porque o XML pode incluir blocos de script. Para obter mais informações sobre a adição de assinaturas digitais, consulte about_Signing
Consulte também
Definição de propriedades padrão para objetos
Defining Default Methods for Objects (Predefinir Métodos para Objetos)
Defining Default Member Sets for Objects (Predefinir Conjuntos de Membros para Objetos)
Writing a Windows PowerShell Cmdlet (Escrever um Cmdlet do Windows PowerShell)
Comentários
Submeter e ver comentários