astalbold 10 Geschrieben 20. September 2012 Melden Teilen Geschrieben 20. September 2012 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 Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 20. September 2012 Melden Teilen Geschrieben 20. September 2012 Du kannst eine Hashtable nutzen. Der Link zeigt auf eine VBS Lösung. Zitieren Link zu diesem Kommentar
astalbold 10 Geschrieben 21. September 2012 Autor Melden Teilen Geschrieben 21. September 2012 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 Zitieren Link zu diesem Kommentar
Dukel 455 Geschrieben 21. September 2012 Melden Teilen Geschrieben 21. September 2012 (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 21. September 2012 von Dukel Zitieren Link zu diesem Kommentar
astalbold 10 Geschrieben 21. September 2012 Autor Melden Teilen Geschrieben 21. September 2012 Vielen Danke Dukel, genau das war es... Powershell ist gar nicht so leicht. :) Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.