about_Functions_CmdletBindingAttribute
簡単な説明
関数をコンパイル済みコマンドレットのように機能させる属性について説明します。
長い説明
属性は CmdletBinding
、C# で記述されたコンパイル済みコマンドレットのように動作する関数の属性です。 コマンドレットの機能にアクセスできます。
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
表示されます。 (引数の既定値は Medium です)。この引数は、 SupportsShouldProcess 引数も指定されている場合にのみ指定します。
確認要求の詳細については、「確認の 要求」を参照してください。
DefaultParameterSetName
引数 DefaultParameterSetName は、使用するパラメーター セットを特定できないときに PowerShell が使用するパラメーター セットの名前を指定します。 この問題を回避するには、各パラメーターの一意のパラメーターを必須パラメーターに設定します。
HelpURI
HelpURI 引数は、関数を説明するオンライン バージョンのヘルプ トピックのインターネット アドレスを指定します。 HelpURI 引数の値は、"http" または "https" で始まる必要があります。
HelpURI 引数の値は、関数に対して返される Get-Command
CommandInfo オブジェクトの HelpURI プロパティの値に使用されます。
ただし、ヘルプ ファイルがコンピューターにインストールされ、ヘルプ ファイルの RelatedLinks セクションの最初のリンクの値が URI である場合、またはコメント ベースのヘルプの最初 .Link
のディレクティブの値が URI の場合、ヘルプ ファイル内の URI が関数の HelpUri プロパティの値として使用されます。
コマンドレットはGet-Help
、 の Online パラメーターがコマンドで指定されている場合、HelpURI プロパティの値を使用して、関数ヘルプ トピックのGet-Help
オンライン バージョンを検索します。
SupportsPaging
SupportsPaging 引数は、First、Skip、IncludeTotalCount の各パラメーターを関数に追加します。 これらのパラメーターを使用すると、ユーザーは非常に大きな結果セットから出力を選択できます。 この引数は、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 は、Windows PowerShell 3.0 で導入されています。
パラメーターが位置指定の場合、パラメーター名は省略可能です。 PowerShell は、関数コマンド内の名前のないパラメーター値の順序または位置に従って、名前のないパラメーター値を関数パラメーターに関連付けます。
パラメーターが位置指定 ("名前付き") でない場合は、コマンドでパラメーター名 (または名前の省略形または別名) が必要です。
PositionalBinding が の場合、$True
関数パラメーターは既定で位置指定されます。 PowerShell は、関数で宣言されている順序でパラメーターに位置番号を割り当てます。
PositionalBinding が の場合、$False
関数パラメーターは既定では位置指定されません。 Parameter 属性の Position 引数が パラメーター で宣言されていない限り、パラメーターを関数で使用する場合は、パラメーター名 (または別名または省略形) を含む必要があります。
Parameter 属性の Position 引数は、PositionBinding の既定値よりも優先されます。 引数 Position を使用すると、パラメーターの位置の値を指定できます。 Position 引数の詳細については、「about_Functions_Advanced_Parameters」を参照してください。
メモ
SupportsTransactions 引数は、高度な関数ではサポートされていません。
Keywords
about_Functions_CmdletBinding_Attribute