2016-04-05 50 views
1

title:使用數組和哈希的powershell forloop?從數組powershell哈希構建

我知道如何在perl和unixshell中做到這一點。我沒有在PowerShell中看到它。所以我會問。

我會保持我的問題簡單。 如果我有一個列表,我想做一個散列,其中的鍵是列表的元素,並且該值是一個屬性。

像我有7個數組矮人服務器

$d = ("happy", "sleepy", "sneezy", "doc", "grumpy", "dopey", "bashful") 

我想湊成爲他們高度英寸:d_height{ "happy" } = "40"

似乎有點簡單?好。但是如果這個列表是即時生成的,那麼這個哈希必須在運行中完成。怎麼樣?

....更詳細的,如果你想它..... 我從PowerShell開始,然後恢復到Perl,因爲我知道這一點。

我具有7個矮人服務器

$d = ("happy", "sleepy", "sneezy", "doc", "grumpy", "dopey", "bashful") 

foreach ($one (0 .. ($d.count - 1))){ 
    $d[ $one ] 
} 

行陣列..細。現在我想要啓動時間。 我已經知道命令。所以只要假裝就是這樣。

$boottime = server.blahblah 

現在我回到Perl,因爲我知道它。 (嘆氣)

foreach (@d){ 
    $boottime = $d[ $one ].blahblah ; 
    if ($boottime =~ "AM $" or $boottime =~ "PM $"){ 
     $d_height{ $d } = $boottime; 
    } 
     $d_height{ $d } = "unknown"; 
} 

既然我已經破壞了代碼,剩下的就是這些。我去了perl。

foreach $x (keys(%d_height)){ 
    printf("%-20s %03d", $x, $d_height{ $x }); 
} 

我知道....格式表與@{ hash stuff }是的...很好。 但這是perl ....

我怎麼能在PowerShell中做到這一點?

+0

矮人的高度等於服務器的啓動時間?什麼? –

+0

我有一個列表@A。我想要一個散列,其中的散列鍵是@A。 我可以解釋一下,如果我硬連線這樣: '@A =(「1」,「2」,「3」)$ H {「1」} =「apples」$ H {「2」} =「unset 「$ H {」3「} =」番茄「' 而不是硬連線,我會從某些PowerShell命令中建立@A。 我想要有飛行中構建的%H哈希鍵。 (我的問題)。 那麼,我如何使用%H的鍵作爲@A來創建%H哈希? – clonea

回答

1

我覺得我的回答比問題寫得更容易。我認爲這不應該在serverfault。它應該在編程部分。哦。這是答案。

$A = ("one","two","three") 
PS:C:\> foreach($one in ($A)){ 
>> $one 
>> } 
>> 
one 
two 
three 
PS:C:\> 
PS:C:\>[email protected]{} 
PS:C:\>foreach ($one in $A){ 
>> $B.$one = "preset" 
>> } 
>> 
PS C:\> $B 

Name       Value 
----       ----- 
two       preset 
three       preset 
one       preset 

就是這樣。除了幽默之外,我從來沒有提到過矮人。

+0

而問題應該是: 我可以創建一個數組值。 我可以更新散列值。 但我想要一個散列,其中的鍵是從數組值構建的。 – clonea

+0

所以,你有2個相同長度的數組,你想要將它們合併/壓縮成一個哈希表? –

+0

沒有。我保持簡單。很簡單。我有一個數組。我試圖做一個散列,其中新的散列鍵是從數組構建的。我可以添加更多的文字,但我說得越多,它就越容易得到。 – clonea