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

G R*_*bin 4 powershell powershell-4.0

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

Ƭᴇc*_*007 5

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

$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.
Run Code Online (Sandbox Code Playgroud)

创建新属性和复制值的替代方法可能是创建新的“ AliasProperty ”,这是一个简单链接到现有属性的新属性(具有自己的名称)。

例如。:

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
Run Code Online (Sandbox Code Playgroud)