Jump to content

Powershell - Array sortieren


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

Hallo,

 

ich arbeite mich gerade in Powershell ein und stoße bei einem Script auf ein Problem wo ich nicht weiß wie ich es lösen soll.

 

ich muss die folgenden zwei Werte einlesen. Die Werte sehen wie folgt aus:

 

23 Team15

55 Team20

12 Team30

02 Team32

 

Die Werte der ersten Spalte muss ich sortieren. Kleinste Wert zu erst und dann aufsteigend. Ausgeben muss ich aber den zweiten Wert (z.B. Team15).

 

Ich muss da doch mit einem multidimensionalen Array arbeiten, oder? Habe mir da schon mehrer sachen im Internet angesehen nur leider verstehe ich die noch nicht.

Hier im Board habe ich z.B. folgendes gefunden:

routine-sortieren-zweidimensionalen-arrays-157402.html

Aber das kapiere ich mal gar nicht...

 

ich hoffe mir kann hier jemand helfen und einen schubs in die richtige Richtung geben, danke.

 

AS

Geschrieben

Danke, hab mal etwas gesucht und bin auf folgenden Artikel von Microsoft gestossen:

 

Windows PowerShell Tip: Working with Hash Tables

 

Mein Testcode sieht wie folgt aus:

 

$array = @{"Team20" = 10; "Team10" = 22; Team50 = 5}
$array.Add("Team30", 6)
$array.GetEnumerator() | Sort-Object Value

 

Das funktioniert soweit ganz gut aber woran ich jetzt scheiter sind vermutlich 2x Kleinigkeiten.

 

Nach dem sortieren ist das Array aber immer noch unsortiert, so könnte ich das ja nicht in einer foreach-Schleife verwenden.

Wie kann ich denn den ersten Wert z.B. ausgeben, habe dazu viele schreibweisen ($array[0,9] oder $array[0][1] usw.)gefunden, aber keine die mir die ersten beiden Werte ausgeben kann. Es gibt unter Powershell wohl viele verschiedene Arten von multi Arrays.

 

Ich muss nach dem sortieren den kleinsten Wert ausgeben, im Beispiel 5 mit Team50 und danach das ganze Array noch mit einer Foreach-Schleife komplett abarbeiten.

 

Bräuchte da noch mal einen Tipp/Hinweis...

 

Danke

 

AS

Geschrieben (bearbeitet)

Du hast kein Array mehr sondern eine Hashtable.

 

($array.GetEnumerator() | Sort-Object Value)[0].Name

 

foreach($item in $array.GetEnumerator()){

#...

}

 

Windows PowerShell Tip: Working with Hash Tables

 

EDIT:

Statt

($array.GetEnumerator() | Sort-Object Value)[0].Name

geht auch

$array.GetEnumerator() | Sort-Object Value | Select-Object -First 1 -Property Name

. Das ist die "ausgeschriebene" Variante.

bearbeitet von Dukel
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...