如何向自定义对象添加更多属性值

时间:2016-03-24 12:57:03

标签: powershell object

如果我这样做

$account = New-Object -TypeName psobject -Property @{User="Jimbo"; Password="1234"}

如何在不覆盖现有值的情况下将其他用户和密码值添加到$account

我无法从哈希表中预先填充$account。我不知道运行时的所有用户和密码。

2 个答案:

答案 0 :(得分:14)

New-Object-Property参数将哈希表作为参数。如果您对哈希表进行了排序,则可以按特定顺序添加属性。如果您需要在创建时扩展属性列表,只需在哈希表中添加更多条目:

$ht = [ordered]@{
  'Foo' = 23
  'Bar' = 'Some value'
  'Other Property' = $true
  ...
}

$o = New-Object -Type PSObject -Property $ht

如果您需要在创建对象后添加更多属性,则可以通过Add-Member cmdlet执行此操作:

$o | Add-Member -Name 'New Property' -Type NoteProperty -Value 23
$o | Add-Member -Name 'something' -Type NoteProperty -Value $false
...

或通过计算出的属性:

$o = $o | Select-Object *, @{n='New Property';e={23}}, @{n='something';e={$false}}

答案 1 :(得分:6)

如果您想使用array来存储用户+ pwd凭据,则应将其声明为$account = @() $account += New-Object -TypeName psobject -Property @{User="Jimbo"; Password="1234"} $account += New-Object -TypeName psobject -Property @{User="Jimbo2"; Password="abcd"} $account += New-Object -TypeName psobject -Property @{User="Jimbo3"; Password="idontusepwds"} 并在需要时添加项目:

$account

User Password ---- -------- Jimbo 1234 Jimbo2 abcd Jimbo3 idontusepwds 的输出:

pw.flush();