在对another question发表评论之后,我尝试将CmdletBinding添加到函数中。这是一个玩具示例
function example {
[CmdletBinding()]Param()
$args
}
但是试着用它我得到了:
> example foo
example : A positional parameter cannot be found that accepts argument 'foo'.
At line:1 char:1
+ example foo
+ ~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [example], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,example
我应该修复什么才能使该函数与传递给它的任何参数一起使用?
答案 0 :(得分:3)
您需要声明一个参数以接受"foo"
块中的Param()
。 Here's the manual on advanced parameters。在您的情况下,您希望参数接受与任何其他参数(无)不匹配的任何值,因此您使用ValueFromRemainingArguments
参数设置为true来声明它。
function example {
[CmdletBinding()]
Param(
[parameter(ValueFromRemainingArguments=$true)][String[]] $args
)
$args
}
如何使用的示例:
PS K:\> example foo bar hum
foo
bar
hum