Powershell 自定义属性 - 更改属性名称

Powershell 自定义属性 - 更改属性名称

我有一个自定义对象,我想更改现有属性之一的属性名称。可以吗?我知道我可以用新名称创建一个新属性,从旧属性中复制值,然后仅选择我想要的属性(新属性,但排除旧属性),但有没有更简单的方法?

答案1

对象属性的“名称”是只读属性,因此在运行时无法更改。

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

创建新属性并复制值的替代方法是创建一个新的“别名属性“,这是一个新属性(有自己的名称),它只是简单地链接到现有属性。

例如。:

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

答案2

除了上面的答案之外,您还可以执行以下操作

$obj2 = $objtest|选择NotFoo,NotBar

永久删除原始成员

相关内容