scroller
Goto Top

Frage zu Powershell Custom Object

Hallo,

ich will mir in Powershell ein Objekt mit mehreren "Datensätzen" Erzeugen.

so..

$object = New-Object –TypeNamePSObject
$object | Add-Member –MemberTypeNoteProperty –Name OSBuild –Value $os.BuildNumber

..kann ich mir ja ein neues Objekt erzeugen und Members sowie Werte hinzufügen.

Ich will jedoch dass $object eine Art Array wird in dem ich weitere Datensätze hinzufügen oder auch löschen kann.

Geht das mit New-Object, wenn aj wie?

Danke!

Schroller

Content-Key: 241785

Url: https://administrator.de/contentid/241785

Printed on: April 19, 2024 at 04:04 o'clock

Member: colinardo
Solution colinardo Jun 25, 2014 updated at 09:16:40 (UTC)
Goto Top
Hallo Scroller,
ja kein Problem, Beispiel mit einer ArrayList:
# Arraylist erzeugen
$array = new-object System.Collections.ArrayList

# Objekte mit Eigenschaften und zugehörigen Werten erzeugen
$obj1 = new-Object PSObject -Property @{"Eigenschaft1"=Auto";"Eigenschaft2"="BMW"}  
$obj2 = new-Object PSObject -Property @{"Eigenschaft1"="Motorrad";"Eigenschaft2"="Ducati"}  

# Objekte zur ArrayList hinzufügen (das out-null verhindert nur das der Index auf der Konsole ausgegeben wird)
$array.Add($obj1) | out-null
$array.Add($obj2) | out-null

# Objekte aus dem Array löschen
# ... via Objekt
$array.Remove($obj1)
# ... via Index
$array.RemoveAt(0)
# ... via Index für einen Range z.B ab Index 0 entferne 2 Objekte
$array.RemoveRange(0,2)
alternativ kannst du es auch mit einem Standardarray so machen:
# Array erzeugen
$array = @()

# Objekte direkt an das Array anhängen
$obj1 = new-Object PSObject -Property @{"Eigenschaft1"=Auto";"Eigenschaft2"="BMW"}  
$obj2 = new-Object PSObject -Property @{"Eigenschaft1"="Motorrad";"Eigenschaft2"="Ducati"}  

# Einträge daraus löschen
# z.B. das erste Objekt im Array anhand dessen Wert
$array = $array | ?{$_.Eigenschaft1 -ne "Auto"}  
Zum entfernen benutzt du dann die Standardmethoden zum Filtern der Einträge mit Where-Object (Im Beispiel ist ?{} die Abkürzung dafür)

Noch zur Info so nebenbei: Ab PS3.0 gibt es noch einen performanteren Weg "CustomObjects" zu erzeugen:
$obj = [pscustomobject]@{Wert1=1; Wert2=2; Wert3=3}
Grüße Uwe
Member: Scroller
Scroller Jun 25, 2014 at 09:17:18 (UTC)
Goto Top
Hallo Uwe,

danke für Deine Unterstützung.
Das wars!

Gruss
SC