Como Adicionar Propriedades a Objetos no PowerShell

  1. Use Hashtable para Criar Objetos Personalizados no PowerShell
  2. Use Add-Member para Adicionar Propriedades a Objetos no PowerShell
  3. Use Properties.Add() para Adicionar Propriedades a Objetos no PowerShell
  4. Use Select-Object para Adicionar Propriedades a Objetos no PowerShell
  5. Conclusão
Como Adicionar Propriedades a Objetos no PowerShell

Este artigo investiga vários métodos para adicionar propriedades a objetos no PowerShell, uma técnica essencial para usuários de PowerShell, desde iniciantes até especialistas. Começamos explorando o uso de hashtables para criar objetos personalizados, uma abordagem simples, mas poderosa.

Em seguida, apresentamos o cmdlet Add-Member, uma ferramenta versátil para anexar dinamicamente propriedades a objetos existentes. À medida que aprofundamos, descobrimos as complexidades do método Properties.Add(), oferecendo uma maneira mais sutil e controlada de aprimorar objetos.

Finalmente, discutimos o uso de Select-Object em combinação com uma hashtable, um método perfeito para modificações temporárias e preservação do estado do objeto original.

Este guia abrangente visa fornecer insights práticos e exemplos para capacitar usuários de PowerShell a personalizar objetos de acordo com suas necessidades específicas.

Use Hashtable para Criar Objetos Personalizados no PowerShell

Antes de adicionar propriedades a um objeto, primeiro devemos criar um. Uma maneira de fazer isso é através de hashtables.

Para definir brevemente, hashtables são conjuntos de chaves ou pares de valores que precisamos criar e atribuir propriedades a um objeto no PowerShell. No exemplo, estamos criando uma hashtable que representa um único objeto e suas propriedades.

Uma vez que a hashtable, $sampleHashtable, foi definida, podemos usar o acelerador de tipo PSCustomObject para criar uma instância da classe PSCustomObject.

Após executar o snippet de código, obteremos um objeto $sampleHashtable do tipo PSCustomObject com propriedades definidas no programa.

Exemplo 1:

$sampleObject = [PSCustomObject]@{
    ID    = 1
    Shape = "Square"
    Color = "Blue"
}

Como podemos ver, após criar $sampleHashtable, poderemos referenciar cada propriedade como se fosse proveniente de um cmdlet embutido do PowerShell, como Get-Service.

Use Add-Member para Adicionar Propriedades a Objetos no PowerShell

A versatilidade do PowerShell como uma linguagem de script se deve parcialmente à sua capacidade de manipular objetos dinamicamente. Um exemplo primordial dessa capacidade é o cmdlet Add-Member, que permite aos usuários adicionar propriedades e métodos a objetos durante a execução.

O cmdlet Add-Member é uma ferramenta essencial no PowerShell para adicionar dinamicamente membros, como propriedades, métodos ou eventos, a uma instância de um objeto. Este recurso é especialmente útil para personalizar objetos para atender a necessidades específicas ou para aumentar estruturas de dados com informações adicionais.

Exemplo:

$sampleObject | Add-Member -MemberType NoteProperty -Name 'Size' -Value 'Large'
Write-Output $sampleObject

Neste exemplo, começamos criando $sampleObject, um objeto PowerShell personalizado com propriedades predefinidas. Nosso objetivo era aprimorar este objeto adicionando uma nova propriedade.

Usando o cmdlet Add-Member, anexamos uma NoteProperty chamada Size com o valor Large a $sampleObject. Este processo demonstra o poder do PowerShell em estender dinamicamente objetos.

A NoteProperty foi escolhida porque é adequada para valores estáticos, que era nossa exigência.

Por fim, usamos Write-Host para imprimir o objeto atualizado, demonstrando efetivamente a adição da nova propriedade.

Saída:

adicionando propriedades a objetos usando PowerShell - saída 1

Use Properties.Add() para Adicionar Propriedades a Objetos no PowerShell

Um método menos conhecido, mas poderoso, para aprimorar objetos é usar o método Properties.Add(). Esta abordagem é particularmente útil ao trabalhar com objetos personalizados ou quando você precisa modificar objetos de uma maneira mais controlada.

O método Properties.Add() é uma maneira de adicionar propriedades a um objeto PowerShell existente. Este método faz parte da estrutura subjacente do .NET e fornece uma abordagem de nível mais baixo em comparação com o cmdlet Add-Member, mais comumente usado.

Exemplo:

$sampleObject.psobject.Properties.Add([PSNoteProperty]::new('Size', 'Large'))
Write-Host ($sampleObject | Out-String)

Neste exemplo, criamos $sampleObject, um objeto com propriedades predefinidas.

Nosso objetivo era aprimorá-lo adicionando uma nova propriedade chamada Size. Para este propósito, utilizamos o método .psobject.Properties.Add([PSNoteProperty]::new()).

Este método é um pouco mais sutil do que Add-Member. Envolve criar um novo objeto PSNoteProperty diretamente e, em seguida, adicioná-lo à coleção de propriedades do objeto.

Por fim, usando Write-Host, exibimos o objeto atualizado para confirmar a adição da nova propriedade.

Saída:

adicionando propriedades a objetos usando powershell - saída 2

Use Select-Object para Adicionar Propriedades a Objetos no PowerShell

Outra técnica envolve usar Select-Object combinado com uma hashtable (@{}) para adicionar propriedades a objetos. Este método é particularmente útil para criar visualizações personalizadas ou estender objetos sem modificar o objeto original.

O método Select-Object *, @{} é usado para criar um novo objeto ao estender um existente com propriedades adicionais. Esta abordagem é comumente usada para modificações temporárias de objetos, como para fins de exibição ou ao preparar dados para exportação.

É não destrutivo, significando que o objeto original permanece inalterado.

Exemplo:

$extendedObject = $sampleObject | Select-Object *, @{
    Name       = 'Size'
    Expression = { 'Large' }
}
Write-Host ($extendedObject | Out-String)

Neste exemplo, começamos com nosso $sampleObject e definimos um objetivo de aumentá-lo com uma nova propriedade chamada Size. Nossa abordagem não envolveu alterar o objeto original, mantendo sua integridade.

Conseguimos isso canalizando $sampleObject para Select-Object, orientando efetivamente o PowerShell a levar todas as propriedades existentes (*) e introduzir uma nova propriedade definida por uma hashtable.

Em nossa hashtable, especificamos claramente o nome da nova propriedade, Size, e atribuímos seu valor, Large, dentro de um bloco de expressão. Esta abordagem é particularmente elegante, pois constrói um novo objeto, $extendedObject, enriquecido com a propriedade adicional.

Saída:

adicionando propriedades a objetos usando powershell - saída 3

Conclusão

Ao longo deste artigo, percorremos várias metodologias para adicionar propriedades a objetos no PowerShell, cada uma com suas vantagens e aplicações únicas. Começando pela criação de objetos personalizados usando hashtables, lançamos as bases para entender as propriedades de objetos no PowerShell.

Em seguida, exploramos o cmdlet Add-Member, um pilar na script do PowerShell para aprimorar objetos dinamicamente. A exploração do método Properties.Add() abriu uma janela para uma abordagem mais aprofundada, permitindo uma manipulação controlada das propriedades do objeto.

Por último, o uso de Select-Object com uma hashtable demonstrou uma maneira não destrutiva e elegante de estender objetos. Cada método, do mais simples ao mais complexo, serve a um propósito único, oferecendo aos usuários do PowerShell um rico conjunto de ferramentas para personalizar e gerenciar objetos em seus scripts.

Está gostando dos nossos tutoriais? Inscreva-se no DelftStack no YouTube para nos apoiar na criação de mais vídeos tutoriais de alta qualidade. Inscrever-se
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

Artigo relacionado - PowerShell Object