You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell拆分变量为动态多维数组时遇索引越界问题求助

问题:PowerShell多维数组拆分时出现“Index is out of boundaries.”错误

我尝试在PowerShell中将变量拆分为多维变量时,出现了“Index is out of boundaries.”错误。试过声明额外的$table()变量,但所有方法都失败了。我的需求是$tables变量需要接收动态输入(可以有不同数量的表名,用:分隔,表的坐标用,分隔),期望得到如下格式的输出:

$tables[0][0] = "tab_eposter"
$tables[0][1] = "2"
...
$tables[1][0] = "tab_befaring"
...
$tables[1][2] = 3

以下是我的代码:

function Get-Txt-From-Excel {
  Param(
    [Parameter(Mandatory)]
    $inFile,
    [Parameter(Mandatory)]
    $outFile,
    $ranges = "info_ordre,info_adresse",
    $tables = "tab_eposter,2,2,1,3,3,2:tab_befaring,2,3",
    $sheet = "prosjekt-info",
  )
  try{
    # Internal variables
    $ranges = $ranges -split ","
    $tables = $tables -split ":"
    for( $i = 0; $i -le $tables.length; $i++ ) {
      $tmp_table = $tables[$i] -split ","
      $tables[$i] = $tmp_table
    }
    Write-Host $tables[0][0]
    throw
...

解决方案

错误原因

循环条件使用了$i -le $tables.length,但PowerShell数组的索引从0开始,$tables.length是数组的元素总数。比如拆分后$tables有2个元素,最大索引是1,当$i等于$tables.length(即2)时,访问$tables[$i]就会触发索引越界错误。

修改后的代码

推荐新建空数组存储拆分后的多维结构,同时用foreach遍历避免索引问题:

function Get-Txt-From-Excel {
  Param(
    [Parameter(Mandatory)]
    $inFile,
    [Parameter(Mandatory)]
    $outFile,
    $ranges = "info_ordre,info_adresse",
    $tables = "tab_eposter,2,2,1,3,3,2:tab_befaring,2,3",
    $sheet = "prosjekt-info"
  )
  try{
    # Internal variables
    $ranges = $ranges -split ","
    $splitTableStrs = $tables -split ":"
    $tables = @() # 初始化空数组用于存储多维结构
    
    foreach ($tableStr in $splitTableStrs) {
      # 用逗号包裹拆分结果,确保添加的是子数组而非扁平化元素
      $tables += ,($tableStr -split ",")
    }

    # 验证输出
    Write-Host $tables[0][0] # 输出:tab_eposter
    Write-Host $tables[1][2] # 输出:3
    
    # 后续业务逻辑...
  }
  catch {
    Write-Error $_.Exception.Message
  }
}

关键注意点

  1. 循环边界修正:如果坚持使用for循环,需将条件改为$i -lt $tables.length(小于而非小于等于),避免访问不存在的索引。
  2. 数组扁平化问题:PowerShell默认会把数组元素扁平化添加到另一个数组,用,($subArray)的方式可以强制添加子数组,保留多维结构。

内容的提问来源于stack exchange,提问作者Slawowid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 23:33:32