给出以下script.ps1
Param([switch]$Foo)
Write-Output $Foo
如何使未声明的参数(例如script.ps1 -Bar
)出错?
我可以通过解释$args
来编写自己的代码,但是看起来powershell应该可以为我完成代码,因为它已经解析了参数。
答案 0 :(得分:2)
为了只接受声明的参数和意外的额外参数上的错误,必须将脚本/函数设置为高级一个,这可以通过以下方式实现:< / p>
明确地:使用param(...)
属性装饰[CmdletBinding(...)]
块。
隐式:使用[Parameter(...)]
属性修饰任何单个参数。
例如(为简单起见,使用 script块({ ... }
); 脚本和功能也是如此):
PS> & { Param([switch] $Foo) } -Bar
# !! NO error (or output) - undeclared -Bar switch is quietly IGNORED.
# Using the [CmdletBinding()] attribute ensures that only declared
# parameters can be used.
PS> & { [CmdletBinding()] Param([switch] $Foo) } -Bar
A parameter cannot be found that matches parameter name 'Bar'. # OK - error.
...