陷入将数据存储到数组变量

时间:2017-11-02 10:43:12

标签: arrays powershell

我想在PowerShell中将一些数据添加到一个数组变量中。但它显示错误,如“索引超出数组的范围”。我所拥有的是:

$test = @()
for ($i = 0 ; $i -lt 20; $i++)
{
    $test[$i] = $i
}
$test

显示“索引超出数组范围的错误。

PowerShell中是否有任何方法可以将数据存储到数组变量中。

2 个答案:

答案 0 :(得分:2)

$test = @()是一个动态大小的数组。如果你想使用它,你需要在循环中追加它:

$test = @()
for ($i = 0 ; $i -lt 20; $i++) {
    $test += $i
}

或(更好):

$test = @(for ($i = 0 ; $i -lt 20; $i++) {
    $i
})

或(甚至更好,至少在这种特殊情况下):

$test = 0..19

如果要通过索引访问分配值,则需要使用固定大小定义数组:

$test = New-Object Object[] (20)
for ($i = 0 ; $i -lt 20; $i++) {
    $test[$i] = $i
}

或使用所需数量的元素预加载动态大小的数组:

$test = 1..20 | ForEach-Object { $null }
for ($i = 0 ; $i -lt 20; $i++) {
    $test[$i] = $i
}

答案 1 :(得分:0)

试试这个 -

$test = @()
for($i = 0 ; $i -lt 20; $i++)
{
    $test += $i
}
$test

$test[$i]是数组的元素之一,显然如果你试图在那里存储20个元素,它必然会给你ArrayOutOfBounds异常。使用+=运算符将值添加到现有数组。 完成元素存储后,您可以访问数组的各个元素,如$test[0]..$test[19](因为数组的索引从0开始)。