Benutzerdefinierte Powershell-Eigenschaften - Ändern Sie den Namen der Eigenschaft

2083
G Raybin

Ich habe ein benutzerdefiniertes Objekt und möchte den Eigenschaftennamen einer der vorhandenen Eigenschaften ändern. Ist das möglich? Ich weiß, ich könnte eine neue Eigenschaft mit dem neuen Namen erstellen, die Werte aus der alten Eigenschaft kopieren und dann nur die gewünschten Eigenschaften auswählen (neue Eigenschaft, aber die alte ausschließen), aber gibt es einen einfacheren Weg?

2

1 Antwort auf die Frage

2
Ƭᴇcʜιᴇ007

Bei den Objekteigenschaften ist "Name" eine schreibgeschützte Eigenschaft und kann daher nicht zur Laufzeit geändert werden.

$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. 

Eine Alternative zum Erstellen einer neuen Eigenschaft und zum Kopieren von Werten kann die Erstellung einer neuen " AliasProperty " sein, bei der es sich um eine neue Eigenschaft (mit einem eigenen Namen) handelt, die einfach mit einer vorhandenen Eigenschaft verknüpft wird.

z.B.:

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