2016-04-05 4 views
1

название: powershell forloop с массивом и хешем?powershell hash building from array

Я знаю, как это сделать в perl и unixshell. Я не вижу этого в powershell. Поэтому я спрошу.

Я буду держать свой вопрос простым. Если у меня есть список, я хотел бы сделать хэш, где ключи являются элементами списка, а значение является свойством.

Как я массив из 7 гномы серверов

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

И я хотел бы хэширования, чтобы быть их высота в дюймах: d_height{ "happy" } = "40"

Кажется вроде просто? ОК. Но если список сделан «на лету», значит, хэш должен быть сделан «на лету». Как?

.... более подробно если вы хотите это ..... Я начинаю с powershell, а затем возвращаюсь к perl, потому что знаю THAT.

У меня есть массив из 7 дварфов серверов

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

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

OK .. хорошо. Теперь я хочу загрузку. Я уже знаю эту команду. Так что просто притворись, что это все.

$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 "} =" tomato "' Вместо проводной связи я буду иметь @A, встроенный на лету, из команды powershell. Я хочу, чтобы ключи хеша% H строились на лету. (мой вопрос). Итак, как мне на лету построить хеш% H с ключами% H, являющимися @A? – 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