次の方法で共有


about_Functions_CmdletBindingAttribute

簡単な説明

関数をコンパイル済みコマンドレットのように機能させる属性について説明します。

長い説明

属性は CmdletBinding 、C# で記述されたコンパイル済みコマンドレットのように動作する関数の属性です。 コマンドレットの機能へのアクセスを提供します。

PowerShell は、コンパイルされたコマンドレットのパラメーターを CmdletBinding バインドするのと同じ方法で、 属性を持つ関数のパラメーターをバインドします。 $PSCmdlet自動変数は 属性を持つ関数でCmdletBinding使用できますが$Args、変数は使用できません。

属性を持つ CmdletBinding 関数では、一致する位置パラメーターを持たない不明なパラメーターと位置引数によって、パラメーター バインドが失敗します。

注意

コンパイルされたコマンドレットでは、必須 Cmdlet の属性が使用されます。これは、このトピックで説明する属性に似ています CmdletBinding

構文

次の例は、 属性のすべての省略可能な引数を指定する関数の形式を CmdletBinding 示しています。 各引数の簡単な説明は、この例に従います。

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

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

CmdletBinding 属性から省略すると、CmdletBinding 属性のブール型の引数型は既定でFalse になります。 引数の値を に $true 設定するか、引数を名前で一覧表示します。 たとえば、次の CmdletBinding 属性は同等です。

{
    [CmdletBinding(SupportsPaging=$true)]

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

# Boolean arguments can be defined using this shorthand syntax

{
    [CmdletBinding(SupportsPaging)]

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

ConfirmImpact

ConfirmImpact 引数は、ShouldProcess メソッドの呼び出しによって関数のアクションを確認するタイミングを指定します。 ShouldProcess メソッドを呼び出すと、ConfirmImpact 引数がユーザー設定変数の値以上の場合にのみ、確認プロンプトが$ConfirmPreference表示されます。 (引数の既定値は Medium です)。この引数は 、SupportsShouldProcess 引数も指定されている場合にのみ指定します。

確認要求の詳細については、「確認の 要求」を参照してください。

DefaultParameterSetName

DefaultParameterSetName 引数は、使用するパラメーター セットを特定できない場合に PowerShell が使用するパラメーター セットの名前を指定します。 この問題を回避するには、各パラメーターの一意のパラメーターを必須パラメーターに設定します。

HelpURI

HelpURI 引数は、関数を記述するオンライン バージョンのヘルプ トピックのインターネット アドレスを指定します。 HelpURI 引数の値は、"http" または "https" で始まる必要があります。

HelpURI 引数の値は、関数に対して返される Get-CommandCommandInfo オブジェクトの HelpURI プロパティの値に使用されます。

ただし、ヘルプ ファイルがコンピューターにインストールされていて、ヘルプ ファイルの RelatedLinks セクションの最初のリンクの値が URI である場合、またはコメント ベースのヘルプの最初 .Link のディレクティブの値が URI である場合、ヘルプ ファイル内の URI が関数の HelpUri プロパティの値として使用されます。

コマンドレットではGet-Help、 の Online パラメーターがコマンドで指定されている場合、HelpURI プロパティの値を使用して、関数ヘルプ トピックのGet-Helpオンライン バージョンを検索します。

SupportsPaging

SupportsPaging 引数は、FirstSkipIncludeTotalCount の各パラメーターを関数に追加します。 これらのパラメーターを使用すると、ユーザーは非常に大きな結果セットから出力を選択できます。 この引数は、SQL データベースなどのデータ選択をサポートする大規模なデータ ストアからデータを返すコマンドレットと関数用に設計されています。

この引数は、Windows PowerShell 3.0 で導入されました。

  • First: 最初の 'n' オブジェクトのみを取得します。
  • Skip: 最初の 'n' オブジェクトを無視し、残りのオブジェクトを取得します。
  • IncludeTotalCount: データ セット内のオブジェクトの数 (整数) とそれに続くオブジェクトの数を報告します。 コマンドレットが合計カウントを特定できない場合は、"不明な合計数" を返します。

PowerShell には、返される合計カウント値を取得し、合計カウント値の精度の見積もりを含むヘルパー メソッドである NewTotalCount が含まれています。

次のサンプル関数は、ページング パラメーターのサポートを高度な関数に追加する方法を示しています。

function Get-Numbers {
    [CmdletBinding(SupportsPaging)]
    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 です。 位置指定バインドを無効にするには、 の値$Falseを指定して引数 PositionalBinding を使用できます。

引数 PositionalBinding は、Windows PowerShell 3.0 で導入されています。

パラメーターが位置指定の場合、パラメーター名は省略可能です。 PowerShell は、関数コマンドの名前のないパラメーター値の順序または位置に従って、名前のないパラメーター値を関数パラメーターに関連付けます。

パラメーターが位置指定されていない場合 ("名前付き")、パラメーター名 (または名前の省略形または別名) がコマンドに必要です。

PositionalBinding が の場合、$True関数パラメーターは既定で位置指定されます。 PowerShell は、関数で宣言されている順序でパラメーターに位置番号を割り当てます。

PositionalBinding が の場合、$False関数パラメーターは既定では位置指定されません。 Parameter 属性の Position 引数が パラメーター で宣言されていない限り、パラメーターを関数で使用する場合は、パラメーター名 (別名または省略形) を含む必要があります。

Parameter 属性の Position 引数は、PositionBinding の既定値よりも優先されます。 引数 Position を使用すると、パラメーターの位置の値を指定できます。 Position 引数の詳細については、「about_Functions_Advanced_Parameters」を参照してください。

メモ

SupportsTransactions 引数は、高度な関数ではサポートされていません。

キーワード

about_Functions_CmdletBinding_Attribute

こちらもご覧ください