mhard666
Goto Top

PowerShell verschachtelte Hashtable zerlegen

Hallo allerseits,

ich habe hier eine verschachtelte Hashtable. Diese muss ich zerlegen und die einzelnen Hashtables in eine Liste packen.

$h = @{
    Erster = @{wert = "erster"; name = "heinz"};  
    Zweiter = @{wert = "zweiter"; name = "willi"};  
    Dritter = @{wert = "dritter"; name = "moni"};  
    Usw = @{wert = "usw"; name = "ernst"}  
}

Die Hashtable soll in eine Liste/Array konvertiert werden, so dass die Unter-Hashtables (erster, zweiter, dritter, usw) als Elemente in dem Array gespeichert werden.
Rauskommen muss soetwas wie:

$l = @(
    @{wert = "erster"; name = "heinz"};  
    @{wert = "zweiter"; name = "willi"};  
    @{wert = "dritter"; name = "moni"};  
    @{wert = "usw"; name = "ernst"}  
)

Ich bekomme es irgendwie nicht gebacken. Am Ende sind die Elemente in der Liste nicht vom Typ Hashtable, sondern DictionaryEntry. Damit kann ich allerdings gerade nicht wie gewünscht arbeiten.

Hat wer eine Idee, wie ich das bewerkstelligen kann?

Danke.

VG mhard666.

Content-ID: 1353059499

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

Ausgedruckt am: 21.11.2024 um 19:11 Uhr

7907292512
Lösung 7907292512 24.08.2023 aktualisiert um 16:38:51 Uhr
Goto Top
Einfach
$h = [ordered]@{
    Erster = @{wert = "erster"; name = "heinz"}  
    Zweiter = @{wert = "zweiter"; name = "willi"}  
    Dritter = @{wert = "dritter"; name = "moni"}   
    Usw = @{wert = "usw"; name = "ernst"}  
}
# ... umwandeln
[hashtable[]]$array = $h.Values
# ... einige Elemente ausgeben
$array[0].name
$array[1].name

Das umwandeln kann man sich aber in der Regel auch sparen. Eine Hashtable kannst du auch so direkt itterieren
$h.GetEnumerator() | %{
    $_.Value
}
Gruß siddius
mhard666
mhard666 25.08.2023 um 11:07:18 Uhr
Goto Top
Moin,

Danke, passt. Genau das was ich gesucht habe - auch das direkte Iterieren der Hashtable.

VG mhard666.