如何使用带括号的powershell中的参数调用函数。
我有这个函数的例子
function Greet([string]$name , [int]$times)
{
for ([int]$i = 1; $i -le $times;$i++)
{
Write-Host Hiiii $name
}
}
如果我使用调用函数
Greet Ricardo 5
或Greet "Ricardo" 5
有效。
但是,当我使用Greet ("Ricardo",5)
或Greet("Ricardo" ; 5)
时,它会失败。
有什么问题?
答案 0 :(得分:14)
函数的行为类似于cmdlet。也就是说,你不要输入dir(c:\ temp)。函数同样将参数作为空格分隔并像cmdlet一样,支持位置,命名和可选参数,例如:
Greet Recardo 5
Greet -times 5 -name Ricardo
PowerShell使用()允许您指定如下表达式:
function Greet([string[]]$names, [int]$times=5) {
foreach ($name in $names) {
1..$times | Foreach {"Hi $name"}
}
}
Greet Ricardo (1+4)
Great Ricardo # Note that $times defaults to 5
您还可以使用逗号分隔列表指定数组,例如:
Greet Ricardo,Lucy,Ethyl (6-1)
因此,当您传递("Ricardo",5)
之类的内容时,会将其评估为单个参数值,该值是包含两个元素"Ricardo"
和5
的数组。这将传递给$name
参数,但$times
参数没有值。
您使用带括号的参数列表的唯一时间是调用.NET方法,例如:
"Hello World".Substring(6, 3)