我们经常可以注意到PowerShell的脚本或者函数中的第一行总会有[CmdletBinding()],它到底有什么用哩?
它的使用涵盖了高级函数(advanced functions,或者也称为"Script Cmdlet")很大一部分。它的主要功能是让PowerShell脚本或者函数能够有cmdlet样式的参数绑定功能。你可以获得以下四种功能:
- 可以为参数添加[Parameter()]属性,参见about_functions_advanced_parameters获得更多的详情。理论上,我们可以不用添加[CmdletBinding()]也能使用它,但我们经常是看见它们在一起的。
- 可以让我们的脚本或者函数使用Write-Verbose和Write-Debug,并且可以使用公共参数-Verbose或者-Debug来控制它们的输出。
- 你的脚本或者函数可以使用其它的公共参数。见about_common_parameters
- 可以让你的脚本或者函数使用-WhatIf和-Confirm,像这样指定[CmdletBinding(SupportsShouldProcess=$True,ConfirmImpact=Medium)]. 你依然需要在脚本中像这样来使用这个开关$pscmdlet.ShouldProcess()。
附注:我实验了1-3条,可以不用指定[CmdletBinding()]属性也可以,我的版本是V2,不知道是不是默认就绑定的!?
转载于:https://blog.51cto.com/lockrock/844362