about_Functions_CmdletBindingAttribute

簡単な説明

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

詳細な説明

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

CmdletBinding属性を使用すると、PowerShell によって共通パラメーターが自動的に追加されます。 共通パラメーターと同じ名前を使用するパラメーターは作成できません。 詳細については、「about_CommonParameters」を参照してください。

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

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

Note

コンパイルされたコマンドレットでは、必要な 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設定変数の値以上の場合にのみ、確認プロンプトが表示されます。 (引数の既定値は .)この引数は、 SupportsShouldProcess 引数も指定されている場合にのみ指定します。

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

DefaultParameterSetName

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

HelpURI

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

HelpURI 引数の値は、CommandInfo 関数に対して返されるCommandInfo オブジェクトの値に使用Get-Command

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

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

SupportsPaging

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

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

  • First: 最初の 'n' オブジェクトのみを取得します。
  • スキップ: 最初の '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 です。 PositionalBinding 引数の値を $False と共に使用すると、位置バインディングを無効にすることができます。

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

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

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

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

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

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

メモ

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

キーワード

about_Functions_CmdletBinding_Attribute

関連項目