2016-04-05 118 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