如果我这样做
$account = New-Object -TypeName psobject -Property @{User="Jimbo"; Password="1234"}
如何在不覆盖现有值的情况下将其他用户和密码值添加到$account
?
我无法从哈希表中预先填充$account
。我不知道运行时的所有用户和密码。
答案 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();