如何使用powershell中带括号的参数调用函数。

我以这个功能为例

function Greet([string]$name , [int]$times)
{
    for ([int]$i = 1; $i -le $times;$i++)
    {
        Write-Host Hiiii $name
    }
}

如果我调用函数使用Greet Ricardo 5Greet "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/

10-11 20:18