关于 Functions CmdletBindingAttribute

简短说明

描述使函数的工作方式类似于已编译的 cmdlet 的属性。

长说明

CmdletBinding 属性是一个函数属性,使它们像用 C# 编写的已编译 cmdlet 一样运行。 它提供对 cmdlet 功能的访问权限。

PowerShell 以绑定已编译 cmdlet 的参数的方式绑定具有 CmdletBinding 该属性的函数的参数。 自动 $PSCmdlet 变量可用于具有特性的 CmdletBinding 函数,但 $Args 该变量不可用。

在具有 CmdletBinding 属性的函数中,没有匹配位置参数的未知参数和位置参数会导致参数绑定失败。

注意

编译的 cmdlet 使用所需的 Cmdlet 属性,这类似于 CmdletBinding 本主题中所述的属性。

语法

以下示例显示了指定属性的所有可选参数的 CmdletBinding 函数的格式。 每个参数的简要说明遵循此示例。

{
    [CmdletBinding(ConfirmImpact=<String>,
    DefaultParameterSetName=<String>,
    HelpURI=<URI>,
    SupportsPaging=<Boolean>,
    SupportsShouldProcess=<Boolean>,
    PositionalBinding=<Boolean>)]

    Param ($Parameter1)
    Begin{}
    Process{}
    End{}
}

ConfirmImpact

ConfirmImpact 参数指定调用 ShouldProcess 方法应确认函数的操作何时。 仅当 ConfirmImpact 参数等于或大于首选项变量的值时,对 ShouldProcess 方法的$ConfirmPreference调用才会显示确认提示。 (参数的默认值为 Medium.) 仅在同时指定 SupportsShouldProcess 参数时指定此参数。

有关确认请求的详细信息,请参阅 “请求确认”。

DefaultParameterSetName

DefaultParameterSetName 参数指定 PowerShell 在无法确定要使用的参数集时将尝试使用的参数集的名称。 可以通过使每个参数的唯一参数设置必需参数来避免此问题。

HelpURI

HelpURI 参数指定描述函数的联机版本的帮助主题的 Internet 地址。 HelpURI 参数的值必须以“http”或“https”开头。

HelpURI 参数值用于返回函数的 CommandInfo 对象的 Get-CommandHelpURI 属性的值。

但是,当帮助文件安装在计算机上,帮助文件的 RelatedLinks 部分中第一个链接的值是 URI,或者基于注释的帮助中的第一 .Link 个指令的值是 URI 时,帮助文件中的 URI 用作函数的 HelpUri 属性的值。

Get-Help cmdlet 使用 HelpURI 属性的值在命令中指定 Online 参数 Get-Help 时查找函数帮助主题的联机版本。

SupportsPaging

SupportsPaging 参数将 FirstSkipIncludeTotalCount 参数添加到函数。 这些参数允许用户从非常大的结果集中选择输出。 此参数专为 cmdlet 和函数而设计,这些 cmdlet 和函数从支持数据选择的大型数据存储(例如 SQL 数据库)返回数据。

此参数是在 Windows PowerShell 3.0 中引入的。

  • 第一个:仅获取第一个“n”对象。
  • Skip:忽略第一个“n”对象,然后获取剩余的对象。
  • IncludeTotalCount:报告数据集中的对象数, (整数) 后跟对象。 如果 cmdlet 无法确定总计数,则返回“未知总计计数”。

PowerShell 包括 NewTotalCount,一种帮助程序方法,该方法获取要返回的总计数值,并包含总计数值的准确度估计值。

以下示例函数演示如何向高级函数添加对分页参数的支持。

function Get-Numbers {
    [CmdletBinding(SupportsPaging = $true)]
    param()

    $FirstNumber = [Math]::Min($PSCmdlet.PagingParameters.Skip, 100)
    $LastNumber = [Math]::Min($PSCmdlet.PagingParameters.First +
      $FirstNumber - 1, 100)

    if ($PSCmdlet.PagingParameters.IncludeTotalCount) {
        $TotalCountAccuracy = 1.0
        $TotalCount = $PSCmdlet.PagingParameters.NewTotalCount(100,
          $TotalCountAccuracy)
        Write-Output $TotalCount
    }
    $FirstNumber .. $LastNumber | Write-Output
}

SupportsShouldProcess

SupportsShouldProcess 参数将 ConfirmWhatIf 参数添加到函数。 Confirm 参数在管道中的每个对象上运行命令之前会提示用户。 WhatIf 参数列出了命令将进行的更改,而不是运行该命令。

PositionalBinding

PositionalBinding 参数确定函数中的参数是否默认为位置。 默认值为 $True。 可以使用 PositionalBinding 参数和值为禁用位置绑定的值 $False

PositionalBinding 参数在 Windows PowerShell 3.0 中引入。

当参数是位置时,参数名称是可选的。 PowerShell 根据函数命令中未命名参数值的顺序或位置,将未命名参数值与函数参数相关联。

如果参数不是位置 (它们为“named”) ,则命令中需要参数名称 (或名称的缩写或别名) 。

PositionalBinding$True时,函数参数默认为位置。 PowerShell 按函数中声明其顺序将位置号分配给参数。

PositionalBinding$False时,函数参数默认不定位。 除非参数属性的Position 参数在参数上声明,否则在函数中使用参数时,必须包含参数名称 (或别名或缩写) 。

Parameter 属性的 Position 参数优先于 PositionalBinding 默认值。 可以使用 Position 参数指定参数的位置值。 有关 Position 参数的详细信息,请参阅 about_Functions_Advanced_Parameters

说明

高级函数不支持 SupportsTransactions 参数。

关键字

about_Functions_CmdletBinding_Attribute

请参阅

about_Functions

about_Functions_Advanced

about_Functions_Advanced_Methods

about_Functions_Advanced_Parameters

about_Functions_OutputTypeAttribute