Como Adicionar Propriedades a Objetos no PowerShell
- Use Hashtable para Criar Objetos Personalizados no PowerShell
-
Use
Add-Memberpara Adicionar Propriedades a Objetos no PowerShell -
Use
Properties.Add()para Adicionar Propriedades a Objetos no PowerShell -
Use
Select-Objectpara Adicionar Propriedades a Objetos no PowerShell - Conclusão
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:

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:

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:

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.
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn