索引超出了阵列powershell的范围

时间:2019-07-16 03:59:25

标签: powershell

我想要从Excel工作表中提取多个数据。我得到的错误是索引超出了数组的范围。

$Data = Read-Host "Enter the count of Datastore"
$ds = "-sm-"
$Range1 = $Worksheetx1.Range("B1","B1048570")
$Search1 = $Range1.find($ds)
$r = $Search1.row

for ($i=1; $i -le $Data; $i++)
    {
    $Datastore = @()
    $Datastore[$i] = $Worksheetx1.Cells.Item($r, 2).Value2
    $r = $r+1
    }

$Total_Datastore = $Datastore1 + $Datastore2 + $Datastore3 + $Datastore4

$Total_Datastore

1 个答案:

答案 0 :(得分:0)

问题出在以下代码中:

for ($i=1; $i -le $Data; $i++)
{
    $Datastore = @()
    $Datastore[$i] = $Worksheetx1.Cells.Item($r, 2).Value2
    $r = $r+1
}

您正在创建一个空数组$Datastore = @(),并尝试将数据存储在第二个索引中($i=1,数组索引从零开始,因此从索引2开始)。这将导致IndexOutOfRangeException

$Total_Datastore = $Datastore1 + $Datastore2 + $Datastore3 + $Datastore4也没有意义,因为$Datastore1(2,3和4)未在任何地方定义。

尝试:

 # Only integers are allowed
 $Data = [int] (Read-Host "Enter the count of Datastore")
 $ds = "-sm-"
 $Range1 = $Worksheetx1.Range("B1","B1048570")
 $Search1 = $Range1.find($ds)
 $r = $Search1.row

 $Datastore = @()
 for ($i=1; $i -le $Data; $i++) {
     # Todo: Check if $r is in a valid range or not !!!
     $Datastore += $Worksheetx1.Cells.Item($r, 2).Value2
     $r = $r+1
 }

 $Datastore