括号Powershell函数

Ric*_*olo 4 powershell function

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

我有这个功能的例子

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

如果我使用Greet Ricardo 5Greet "Ricardo" 5工作调用函数 .但是当我使用Greet ("Ricardo",5)Greet("Ricardo" ; 5)它失败时.

怎么了?

Kei*_*ill 14

函数的行为类似于cmdlet.也就是说,你不要输入dir(c:\ temp).函数同样将参数作为空格分隔并像cmdlet一样,支持位置,命名和可选参数,例如:

Greet Recardo 5
Greet -times 5 -name Ricardo
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

您还可以使用逗号分隔列表指定数组,例如:

Greet Ricardo,Lucy,Ethyl (6-1)
Run Code Online (Sandbox Code Playgroud)

所以,当你在像通过("Ricardo",5)被评估为单个参数值,该值是包含两个元件的阵列"Ricardo"5.那将被传递给$name参数,但是参数没有值$times.

您使用带括号的参数列表的唯一时间是调用.NET方法,例如:

"Hello World".Substring(6, 3)
Run Code Online (Sandbox Code Playgroud)