次の方法で共有


コマンドレット動的パラメーター

コマンドレットでは、他のパラメーターの引数が特定の値の場合など、特殊な条件下でユーザーが使用できるパラメーターを定義できます。 これらのパラメーターは、必要なときにのみ追加されるため、実行時に追加され、動的パラメーターと呼ばれます。 たとえば、特定のスイッチパラメーターが指定されている場合にのみ、いくつかのパラメーターを追加するコマンドレットを設計できます。

注意

プロバイダーと PowerShell 関数では、動的パラメーターを定義することもできます。

PowerShell コマンドレットの動的パラメーター

PowerShell では、プロバイダーコマンドレットのいくつかで動的パラメーターが使用されます。 たとえば、 Get-Item Get-ChildItem コマンドレットとコマンドレットは、 Path パラメーターで 証明書 プロバイダーのパスを指定した場合に、実行時に codesigningcert パラメーターを追加します。 Path パラメーターに別のプロバイダーのパスが指定されている場合、 Codesigningcert パラメーターは使用できません。

次の例は、を実行したときに、実行時に Codesigningcert パラメーターがどのように追加されるかを示してい Get-Item ます。

この例では、PowerShell ランタイムによってパラメーターが追加され、コマンドレットが正常に実行されました。

Get-Item -Path cert:\CurrentUser -CodeSigningCert
Location   : CurrentUser
StoreNames : {SmartCardRoot, UserDS, AuthRoot, CA...}

この例では、 ファイルシステム ドライブが指定され、エラーが返されます。 エラーメッセージは、 Codesigningcert パラメーターが見つからないことを示しています。

Get-Item -Path C:\ -CodeSigningCert
Get-Item : A parameter cannot be found that matches parameter name 'codesigningcert'.
At line:1 char:37
+  get-item -path C:\ -codesigningcert <<<<
--------
    CategoryInfo          : InvalidArgument: (:) [Get-Item], ParameterBindingException
    FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetItemCommand

動的パラメーターのサポート

動的パラメーターをサポートするには、次の要素をコマンドレットコードに含める必要があります。

インターフェイス

IDynamicParametersのようになります。 このインターフェイスは、動的パラメーターを取得するメソッドを提供します。

例:

public class SendGreetingCommand : Cmdlet, IDynamicParameters

メソッド

IDynamicParametersのようにしてください。 このメソッドは、動的パラメーター定義を含むオブジェクトを取得します。

次に例を示します。

 public object GetDynamicParameters()
 {
   if (employee)
   {
     context= new SendGreetingCommandDynamicParameters();
     return context;
   }
   return null;
}
private SendGreetingCommandDynamicParameters context;

クラス

追加する動的パラメーターを定義するクラス。 このクラスには、各パラメーターの パラメーター 属性と、コマンドレットで必要とされるオプションの エイリアス および 検証 属性が含まれている必要があります。

例:

public class SendGreetingCommandDynamicParameters
{
  [Parameter]
  [ValidateSet ("Marketing", "Sales", "Development")]
  public string Department
  {
    get { return department; }
    set { department = value; }
  }
  private string department;
}

動的パラメーターをサポートするコマンドレットの完全な例については、「 動的パラメーターを宣言する方法」を参照してください。

関連項目

IDynamicParameters (システム管理)

IDynamicParameters (システムの管理) パラメーター

動的パラメーターを宣言する方法

Windows PowerShell コマンドレットの記述