2016-03-24 36 views
6

如果我這樣做你如何添加更多的屬性值,以自定義對象

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

如何添加額外的用戶和密碼值$account不會覆蓋現有的?

我無法從哈希表中預先填充$account。我不知道運行時的所有用戶和密碼。

+0

我認爲,我們需要看到的你是什麼樣的例子試圖去做。如果您在'new-object'之前構建哈希表,則添加新屬性會更容易。 '$ props = @ {User =「Jimbo」;密碼= 「1234」}; $ props.NewProperty =「是啊」 – Matt

+1

我覺得這是一個愚蠢的標記:http://stackoverflow.com/questions/17353797/powershell-how-to-initialize-array-of-custom-objects – Matt

回答

3

如果你想使用$account來存儲用戶密碼+證書,你被宣佈爲array和添加項目,當你想:

輸出的 $account
$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"} 

User Password  
---- --------  
Jimbo 1234   
Jimbo2 abcd   
Jimbo3 idontusepwds 
+0

太棒了。謝謝。當超時到期時,我會將其標記爲答案。 – ATtheincredibleaf

+2

@ATtheincredibleaf你的問題是關於添加屬性值?這個答案顯示瞭如何構建一個對象數組 – Matt

+0

我會在循環中構建它,並避免使用「+ =」。你僅限於PowerShell 2.0嗎? – Matt

9

-PropertyNew-Object的參數將散列表作爲參數。如果您使用哈希表排序,您可以按特定順序添加屬性。如果您需要擴展在創建時的屬性列表中只需添加更多的條目哈希表:

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

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

如果您需要添加更多的屬性後創建對象,你可以通過Add-Member小命令這樣做:

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

或通過calculated properties

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