2012-03-26 60 views
0

我在Powershell的用下面的行的陣列哈希表: 1,送給Tgt,10,FLD 2,XM,如圖8所示,網絡連接 3,TX,12,網絡連接Powershell的 - 從陣列

首先列是行計數器,第二列是過濾器類型,第三列是計數,第四列是動作類型。

我需要創建第二列的第二個&哈希表。

當我在Powershell中執行以下操作時,它會創建一個我可以使用的散列表。

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

但是,如果我使用foreach來嘗試做同樣的事情,它會創建一個集合的集合。

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

每個中有3個元素,但哈希表$ z是{System.Collections.DictionaryEntry,System.Collections.DictionaryEntry,System.Collections.DictionaryEntry}

而哈希表$ Z2是

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

$ 30z可在foreach通過引用使用$ z.Keys,但我不能在$ z2上引用同樣的東西。儘管每行都有3行,但$ z是3行的數組,但$ z2是3行數組,每行1行。我想要做的是讓$ z和$ z2哈希表以各種方式彼此相同。

我敢肯定我做的事情很明顯&錯誤嘗試從現有的數組中創建此散列表,但無法弄清楚我做錯了什麼。任何建議感激。

謝謝!

回答

3

你不顯示你在哪裏初始化$z2,但這一行:

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

要創建一個單一入口(關鍵$b[1]和值$b[2])一個新的哈希表並將其添加到$z2

相反,嘗試使用:

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

要創建一個空的哈希表,使用@{},而不是@()這使得數組。

+0

兩者的結合(我沒有抓住括號vs括號)和$ z2 [$ b [1]]解決了我的問題。非常感謝您的幫助! – 2012-03-26 16:35:42