我有以下代码:
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以不同的方式使用单个项目来处理多维数组?
答案 0 :(得分:9)
像这样调用你的函数:
HideTemplates "test.xml" (,("one", "two", "three"))
HideTemplates "test.xml" (,("four", "five", "six"),("seven", "eight", "nine"))
如果内容已经是数组,则数组子表达式@()
不执行任何操作。使用逗号运算符,它将始终创建一个数组,其中包含一个元素。请注意,您必须添加一组额外的parens,否则:
HideTemplates "test.xml",("one", "two", "three")
将被视为类型数组的单个参数,而不是两个参数。