I have the following code:
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开发者_StackOverflow社区", "nine"))
It prints:
o n e
t w o
t h r
four five six
seven eight nine
I want it to print:
one two three
four five six
seven eight nine
Am I doing something wrong in my code? Is there a way to force PowerShell to tread a multi-dimensional array with a single item differently?
Call your function like so:
HideTemplates "test.xml" (,("one", "two", "three"))
HideTemplates "test.xml" (,("four", "five", "six"),("seven", "eight", "nine"))
An array subexpression ie @()
does nothing if the contents are already an array. Use the comma operator instead which will always create an array with one element around whatever follows it. Note that you have to add an extra set of parens otherwise this:
HideTemplates "test.xml",("one", "two", "three")
Would be considered a single argument of type array instead of two arguments.
精彩评论