如何使用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)
时它失败了。怎么了?
最佳答案
函数的行为类似于 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)
关于function - 括号 Powershell 函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11060833/