2016-03-24 4 views
6

Wenn ich diesenWie Sie mehr Eigenschaftswerte zu einem benutzerdefinierten Objekt

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

tun hinzufügen Wie kann ich zusätzliche Benutzer und Kennwort Werte $account ohne Überschreiben der bestehenden hinzufügen?

Ich kann $account nicht von einer Hashtabelle vorbelegen. Ich kenne nicht alle Benutzer und Passwörter zur Laufzeit.

+0

ich denke, wir müssen ein Beispiel sehen, was Sie sind versuchen zu tun. Das Hinzufügen neuer Eigenschaften ist einfacher, wenn Sie die Hash-Tabelle vor dem 'new-object' erstellen. '$ Requisiten = @ {Benutzer =" Jimbo "; Passwort = "1234"}; $ props.NewProperty = "Yeah" ' – Matt

+1

Ich fühle mich wie dies als ein Betrüger markieren: http://StackOverflow.com/questions/17353797/powershell-how-to-initialize-array-of-custom-objects – Matt

Antwort

3

Wenn Sie $account verwenden möchten Benutzer + PWD Anmeldeinformationen zu speichern, sollten Sie es als array deklarieren und Elemente hinzufügen, wenn Sie wollen:

$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"} 

Ausgabe von $account:

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

Fantastic. Vielen Dank. Ich werde das als die Antwort markieren, wenn das Zeitlimit abgelaufen ist. – ATtheincredibleaf

+2

@ATtheincredibleaf Ihre Frage war das Hinzufügen von Eigenschaftswerten? Diese Antwort zeigt, wie man ein Objekt-Array erstellt – Matt

+0

Ich würde dies in einer Schleife erstellen und die '+ =' vermeiden. Sind Sie auf PowerShell 2.0 beschränkt? – Matt

9

Die -Property Parameter von New-Object nimmt eine Hashtabelle als Argument. Sie können die Eigenschaften in einer bestimmten Reihenfolge hinzufügen, wenn Sie die Reihenfolge der Hashtabelle festlegen. Wenn Sie die Liste der Eigenschaften bei der Erstellung erweitern müssen nur mehr Einträge in der Hash-Tabelle hinzu:

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

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

Wenn Sie mehr Eigenschaften hinzufügen müssen nach das Objekt erstellt wurde, können Sie dies über das Add-Member Cmdlets :

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

oder über calculated properties:

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