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