2012-03-26 13 views
0

ich ein Array in Powershell habe mit den folgenden Zeilen: 1, Tgt, 10, Fld 2, XM, 8, Fi 3, TX, 12, FiPowershell - Hash-Tabelle aus einem Array

Erste Spalte ist der Zeilenzähler, zweite Spalte ist ein Filtertyp, 3. Spalte ist ein Zähler, 4. Spalte ist ein Aktionstyp.

Ich muss eine Hash-Tabelle der 2. & 3. Spalten erstellen.

Wenn ich in Powershell Folgendes mache, erstellt es eine Hash-Tabelle, die ich verwenden kann.

[email protected]() 
$z = { 
Tgt = 10 
XM = 8 
TX = 12 
} 

Aber wenn ich eine foreach verwenden, um das gleiche zu tun, erstellt es eine Sammlung der Sammlung.

foreach ($b in $arr) { 
    $z2 += @{$b[1] = $b[2]} 
    } 

Jedes hat 3 Elemente darin, aber die Hashtabelle $ z eine {System.Collections.DictionaryEntry,System.Collections.DictionaryEntry,System.Collections.DictionaryEntry}

während Hashtabelle $ z2 a

{{System.Collections.DictionaryEntry},{System.Collections.DictionaryEntry},{System.Collections.DictionaryEntry}} 

$ z in einem foreach verwiesen werden kann durch Verwenden Sie die $ z.Keys, aber ich kann nicht die gleiche Sache auf $ Z2 verweisen. Obwohl jeder drei Zeilen hat, ist $ z ein Array aus 3 Zeilen, aber $ z2 ist ein Array aus 3 Arrays mit jeweils einer Zeile. Was ich tun möchte ist, dass $ z und $ z2 Hash-Tabelle in jeder Hinsicht identisch sind.

Ich bin mir sicher, ich mache etwas offensichtlich & falsch versuchen, diese Hash-Tabelle aus dem bestehenden Array zu erstellen, aber kann nicht herausfinden, was ich falsch mache. Irgendwelche Vorschläge geschätzt.

Danke!

Antwort

3

Sie zeigen nicht, wo Sie $z2 initialisiert wird, aber mit dieser Zeile:

$z2 += @{$b[1] = $b[2]} 

Sie eine neue Hash-Tabelle mit einem einzigen Eintrag (Schlüssel $b[1] und Wert $b[2]) zu schaffen und es zu $z2 hinzufügen. mit

Stattdessen versuchen:

$z2[$b[1]] = $b[2] 

eine leere Hash-Tabelle zu erstellen, verwenden @{}, statt @() die ein Array macht.

+0

Die Kombination von beiden Dingen (ich habe nicht die Klammer vs Klammern gefangen) und die $ z2 [$ b [1]] behoben mein Problem. Vielen Dank für die Hilfe! –

Verwandte Themen