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

eod*_*uga 9 powershell object

如果我这样做

$account = New-Object -TypeName psobject -Property @{User="Jimbo"; Password="1234"}
Run Code Online (Sandbox Code Playgroud)

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

我不能预先填充$account哈希表.我不知道运行时的所有用户和密码.

Ans*_*ers 15

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

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

$o = New-Object -Type PSObject -Property $ht
Run Code Online (Sandbox Code Playgroud)

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

$o | Add-Member -Name 'New Property' -Type NoteProperty -Value 23
$o | Add-Member -Name 'something' -Type NoteProperty -Value $false
...
Run Code Online (Sandbox Code Playgroud)

或通过计算属性:

$o = $o | Select-Object *, @{n='New Property';e={23}}, @{n='something';e={$false}}
Run Code Online (Sandbox Code Playgroud)


Mar*_*ndl 8

如果要用于$account存储用户+ pwd凭据,则应将其声明为array并在需要时添加项目:

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

产量$account:

User   Password    
----   --------    
Jimbo  1234        
Jimbo2 abcd        
Jimbo3 idontusepwds
Run Code Online (Sandbox Code Playgroud)

  • @ATtheincredibleaf您的问题是关于添加属性值?这个答案展示了如何构建一个对象数组 (2认同)