Foreach对象返回“无法索引为空数组”,但是当我复制循环的每一行时,效果很好

时间:2019-06-01 00:32:45

标签: arrays powershell hashtable foreach-object

我有一个脚本,我一直在对其进行概念化,并且将某种形式的思想集中在将排队的数组扔到哈希表中,然后使用foreach-object $ _索引对其进行调用以运行一个命令或输出,最少写入冗余代码。

我已经尝试过很多次了,但是似乎没有用。不知道我是不是只是很傻,还是这里还缺少其他东西。

我可以使用其他哈希表和数组来使用此方法,但这给我带来了麻烦。

我将其分解。

The first array will be the first line
The second array will be the 2nd line...
so on and so forth until the 6th.

每行都有多个值,但是每个值对应于与其上方和下方相同的项目……想想一个Excel电子表格……有点像这样。

在此数组/哈希表的最后,我尝试将每个集合收集到...

$control = ( 0..5 | % { first[$_] ; second[$_] ; third[$_] ; fourth[$_] ; fifth[$_] ; sixth[$_] } )

我已经尝试过我能想到的所有排列,使用at符号,没有一个,使用括号而不是curl,使用逗号将控制权交给curl,这似乎并没有用。我还尝试过自己做循环之前放置一个空的control =(),似乎没有任何作用...我似乎无法摆脱这个错误“数组边界之外的索引”

...而当我认为我已经使它起作用时,我调用该变量,并且该变量为空。娜达。

所以现在看来​​,这很有效,但是很糟糕...

$Control = @{ 0 = ( $first[0] , $second[0] , $third[0] , $fourth[0] , $fifth[0] );
              1 = ( $first[1] , $second[1] , $third[1] , $fourth[1] , $fifth[1] );
              2 = ( $first[2] , $second[2] , $third[2] , $fourth[2] , $fifth[2] );
              3 = ( $first[3] , $second[3] , $third[3] , $fourth[3] , $fifth[3] );
              4 = ( $first[4] , $second[4] , $third[4] , $fourth[4] , $fifth[4] );
              5 = ( $first[5] , $second[5] , $third[5] , $fourth[5] , $fifth[5] );
              6 = ( $first[6] , $second[6] , $third[6] , $fourth[6] , $fifth[6] )}

我希望用最少的代码来做到这一点,我不确定为什么这个代码行不通。

顺便说一句,如果我调用$ control [0]或事实之后,您想要得到的最终结果是将这些变量打印到屏幕上........

索引超出了数组的范围。 x5千次...

1 个答案:

答案 0 :(得分:0)

我知道了。

$control=@( 0..5 )

0..5 | % { $control[$_]=@($first[$_];$second[$_];$third[$_];$fourth[$_];$fifth[$_])}

不敢相信我花了这么长时间才意识到我不得不将数组放入上面的空白字段中。我很高兴我解决了它,但是由于没有尽早尝试而感到愚蠢。