55

get-help about_Functions_CmdletBindingAttributeによると

CmdletBinding 属性は、コンパイルされたコマンドレットのように機能する関数の属性です。

スクリプトの上で使用できます。この場合の機能は何ですか?すべての入力に対して PowerShell エンジンによって呼び出される内部の暗黙的な「メイン」関数?

この構文について:

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

私たちは何をしていますか?オブジェクトをインスタンス化しcmdlbinding、引数リストをそのコンストラクターに渡しますか? この構文は次の場所にあります。param()例: [Parameter(ValueFromPipeline=$true)]. この構文には特定の名前があり、他の場所で見つけることができますか?

最後に、単純な PowerShell として、この機能を模倣し、属性を設定してスクリプトの動作を変更することはできますか?

4

3 に答える 3

16

CmdletBinding、Parameterなどは、スクリプト作成者がPowerShellの動作を定義するために使用できる特別な属性クラスです。たとえば、関数をCmdlet機能を備えた高度な関数にします。

たとえば、を介してそれらを呼び出す場合[CmdletBinding()]、クラスの新しいインスタンスを初期化します。

CmdletBindingAttributeクラスの詳細については、MSDNを参照してください。

ParameterAttributeクラスの詳細については、MSDNを参照してください。

ここここの属性クラスの詳細

于 2013-02-03T12:19:46.873 に答える
16

一般的に言えば、CmdletBinding は関数を高度な関数にするものです。スクリプトの先頭に配置すると、スクリプトは「高度な」スクリプトになります。関数とスクリプトはほとんど同じです。スクリプト ファイル名は関数名に相当し、スクリプト コンテンツは関数のスクリプトブロック セクションに相当します。

CmdletBinding 属性を使用すると、Confirm および WhatIf サポート (SupportsShouldProcess 経由) の追加、パラメーターの位置バインディングの無効化など、関数の機能を制御できます。

于 2013-02-03T09:51:11.833 に答える