about_Functions_CmdletBindingAttribute

適用於: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

主題

about_Functions_CmdletBindingAttribute

簡短描述

描述讓函式像已編譯的 Cmdlet 般運作的屬性。

詳細描述

CmdletBinding 屬性是函式的屬性,它會讓函式的運作讓像以 C# 撰寫的已編譯 Cmdlet 一樣,並可讓您存取 Cmdlet 的功能。

Windows 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 引數等於或大於 $ConfirmPreference 喜好設定變數的值時,呼叫 ShouldProcess 方法才會顯示確認提示。(該引數的預設值為 Medium。)請只有在 SupportsShouldProcess 引數也已指定時,才指定這個引數。

如需確認要求的詳細資訊,請參閱 MSDN (Microsoft Developer Network) Library 中的<要求確認>,網址為 https://go.microsoft.com/fwlink/?LinkId=136658。

DefaultParameterSetName

DefaultParameterSetName 引數可指定參數集的名稱,當 Windows PowerShell 無法判斷要使用哪一個參數集時,就會嘗試使用該參數集。您可以使每個參數集的唯一參數都成為必要參數,就可以避免這個問題。

HelpURI

HelpURI 引數可指定描述函式之說明主題線上版本的網際網路位址 (統一資源識別項 (URI))。HelpURI 引數的值必須以 "http" 或 "https" 開頭。

HelpURI 引數值會用於 Get-Command 為函式傳回之 CommandInfo 物件的 HelpURI 屬性值。

不過,當說明檔案安裝在電腦上,而且說明檔的 RelatedLinks 區段中的第一個連結的值是 URI,或者註解式說明中的第一個 .Link 指示詞是 URI 時,說明檔中的 URI 就會做為函式的 HelpUri 屬性值。

當命令中指定 Get-Help 的 Online 參數時,Get-Help Cmdlet 會使用 HelpURI 屬性的值來尋找函式說明主題的線上版本。

SupportsPaging

SupportsPaging 引數會將 First、Skip 和 IncludeTotalCount 參數新增至函式。這些參數可讓使用者從非常大的結果集中選取輸出。此引數專為從支援資料選取之大型資料存放區 (例如 SQL 資料庫) 傳回資料的 Cmdlet 和函式所設計。

此引數在 Windows PowerShell 3.0 中引進。

First:

只取得前 'n' 個物件。

Skip:

略過前 'n' 個物件,然後取得其餘物件。

IncludeTotalCount:

報告資料集中的物件數目 (整數),後面接著那些物件。如果 Cmdlet 無法判斷總計數,則會傳回「未知的總計數」。

Windows PowerShell 包含 NewTotalCount,這是一種 Helper 方法,它會取得要傳回的總計數值,並包含總計數值的精確度評估。

下列函式範例會示範如何將對分頁參數的支援新增至進階函式。

         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 引數會將 Confirm 和 WhatIf 參數新增至函式。Confirm 參數在管線中的每個物件上執行命令之前,會先提示使用者。WhatIf 參數會列出命令會執行的變更,而不是執行命令。

PositionalBinding

PositionalBinding 引數會決定函式中的參數是否預設為位置。預設值為 $True。您可以使用 PositionalBinding 引數搭配 $False 值來停用位置繫結。

PositionalBinding 引數是在 Windows PowerShell 3.0 中引進。

當參數是位置時,參數名稱為選用性。Windows PowerShell 會根據函式命令中未命名之參數值的順序或位置,將未命名的參數值與函式參數產生關聯。

當參數不是位置 (是「具名」) 時,命令中會需要參數名稱 (或是名稱的縮寫或別名)。

當 PositionalBinding 為 $True 時,函式參數預設為位置。Windows PowerShell 會依照在函式中宣告的順序,將位置編號指派給參數。

當 PositionalBinding 為 $False 時,函式參數預設不是位置。除非參數上宣告 Parameter 屬性的 Position 引數,否則當函式中使用參數時,就必須包含參數名稱 (或是別名或縮寫)。

Parameter 屬性的 Position 引數優先於 PositionalBinding 預設值。您可以使用 Position 引數來指定參數的位置值。如需 Position 引數的詳細資訊,請參閱 about_Functions_Advanced_Parameters (https://go.microsoft.com/fwlink/?LinkID=135173)。

附註

進階函式中不支援 SupportsTransactions 引數。

關鍵字

about_Functions_CmdletBinding_Attribute

另請參閱

about_Functions

about_Functions_Advanced

about_Functions_Advanced_Methods

about_Functions_Advanced_Parameters

about_Functions_OutputTypeAttribute