Propriedades personalizadas do Powershell - Alterar nome da propriedade

2

Eu tenho um objeto personalizado e gostaria de alterar o nome da propriedade de uma das propriedades existentes. Isso é possível? Eu sei que eu poderia criar uma nova propriedade com o novo nome, copiar os valores da propriedade antiga e, em seguida, selecione apenas as propriedades que eu quero (nova propriedade, mas exclui a antiga), mas existe uma maneira mais simples?

    
por G Raybin 05.10.2016 / 17:28

1 resposta

2

Com propriedades de objeto, "Nome" é uma propriedade somente leitura e, portanto, não pode ser alterada durante o tempo de execução.

$objTest = New-Object -TypeName PSObject -Property @{ Foo = 42; Bar = 99 }
$objTest.PSObject.Properties["Foo"].Name  # Output: Foo.
$objTest.PSObject.Properties["Foo"].Name = "NotFoo"  # Output: 'Name' is a ReadOnly property.

Uma alternativa para criar uma nova propriedade e copiar valores pode ser criar um novo " AliasProperty ", que é uma nova propriedade (com seu próprio nome) que é simplesmente vinculada a uma propriedade existente.

por exemplo:

PS Y:\> $objTest | Add-Member -MemberType AliasProperty -Name Notfoo -Value Foo
PS Y:\> $objtest

Bar Foo Notfoo
--- --- ------
 99  42     42

PS Y:\> $objtest.Foo = 123
PS Y:\> $objtest

Bar Foo Notfoo
--- --- ------
 99 123    123
    
por 05.10.2016 / 18:06