为什么我的PowerShell多维数组被解释为一维数组?

时间:2010-05-21 17:37:01

标签: arrays powershell multidimensional-array

我有以下代码:

function HideTemplates($File, $Templates)
{
  foreach ($Template in $Templates)
  {
    Write-Host $Template[0] $Template[1] $Template[2]
  }
}

HideTemplates "test.xml" @(("one", "two", "three"))
HideTemplates "test.xml" @(("four", "five", "six"), ("seven", "eight", "nine"))

打印:

o n e
t w o
t h r
four five six
seven eight nine

我想要打印:

one two three
four five six
seven eight nine

我在代码中做错了什么?有没有办法强制PowerShell以不同的方式使用单个项目来处理多维数组?

1 个答案:

答案 0 :(得分:9)

像这样调用你的函数:

HideTemplates "test.xml" (,("one", "two", "three"))
HideTemplates "test.xml" (,("four", "five", "six"),("seven", "eight", "nine"))

如果内容已经是数组,则数组子表达式@()不执行任何操作。使用逗号运算符,它将始终创建一个数组,其中包含一个元素。请注意,您必须添加一组额外的parens,否则:

HideTemplates "test.xml",("one", "two", "three")

将被视为类型数组的单个参数,而不是两个参数。