括号Powershell函数

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

我以这个function为例

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类似。 也就是说,你不要inputdir(c:\ temp)。 函数同样将参数作为空间分隔和像cmdlet一样,支持位置,命名和可选参数,例如:

 Greet Recardo 5 Greet -times 5 -name Ricardo 

PowerShell使用()允许你指定如下的expression式:

 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)