Dinamikus paraméterek deklarálásaHow to Declare Dynamic Parameters

Ez a példa azt mutatja be, hogyan határozható meg a parancsmaghoz a futtatókörnyezetben hozzáadott dinamikus paraméterek.This example shows how to define dynamic parameters that are added to the cmdlet at runtime. Ebben a példában a Department paramétert a rendszer hozzáadja a parancsmaghoz, amikor a felhasználó megadja a Employee switch paramétert.In this example, the Department parameter is added to the cmdlet whenever the user specifies the Employee switch parameter. További információ a dinamikus paraméterekről: parancsmag dinamikus paraméterek.For more information about dynamic parameters, see Cmdlet Dynamic Parameters.

Dinamikus paraméterek definiálásaTo define dynamic parameters

  1. A parancsmag osztály deklarációjában adja hozzá a System. Management. Automation. Idynamicparameters felületet az ábrán látható módon.In the cmdlet class declaration, add the System.Management.Automation.Idynamicparameters interface as shown.

    public class SendGreetingCommand : Cmdlet, IDynamicParameters
    
  2. Hívja meg a System. Management. Automation. Idynamicparameters. Getdynamicparameters * metódust, amely a dinamikus paramétereket definiáló objektumot adja vissza.Call the System.Management.Automation.Idynamicparameters.Getdynamicparameters* method, which returns the object in which the dynamic parameters are defined. Ebben a példában a metódust a paraméter megadásakor hívja meg a rendszer Employee .In this example, the method is called when the Employee parameter is specified.

    public object GetDynamicParameters()
    {
        if (employee)
        {
          context= new SendGreetingCommandDynamicParameters();
          return context;
        }
        return null;
    }
    private SendGreetingCommandDynamicParameters context;
    
  3. Deklaráljon egy osztályt, amely meghatározza a hozzáadandó dinamikus paramétereket.Declare a class that defines the dynamic parameters to be added. Használhatja azokat az attribútumokat, amelyeket a statikus parancsmag paramétereinek deklarálása céljából használt a dinamikus paraméterek deklarálása érdekében.You can use the attributes that you used to declare the static cmdlet parameters to declare the dynamic parameters.

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

PéldaExample

Ebben a példában a Department paramétert akkor adja hozzá a rendszer, amikor a felhasználó megadja a Employee paramétert.In this example, the Department parameter is added whenever the user specifies the Employee parameter. A Department paraméter egy opcionális paraméter, a ValidateSet attribútum pedig az engedélyezett argumentumok megadására szolgál.The Department parameter is an optional parameter, and the ValidateSet attribute is used to specify the allowed arguments.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management.Automation;     // PowerShell assembly.

namespace SendGreeting
{
  // Declare the cmdlet class that supports the
  // IDynamicParameters interface.
  [Cmdlet(VerbsCommunications.Send, "Greeting")]
  public class SendGreetingCommand : Cmdlet, IDynamicParameters
  {
    // Declare the parameters for the cmdlet.
    [Parameter(Mandatory = true)]
    public string Name
    {
      get { return name; }
      set { name = value; }
    }
    private string name;

    [Parameter]
    [Alias ("FTE")]
    public SwitchParameter Employee
    {
      get { return employee; }
      set { employee = value; }
    }
    private Boolean employee;

    // Implement GetDynamicParameters to
    // retrieve the dynamic parameter.
    public object GetDynamicParameters()
    {
      if (employee)
      {
        context= new SendGreetingCommandDynamicParameters();
        return context;
      }
      return null;
   }
   private SendGreetingCommandDynamicParameters context;

    // Overide the ProcessRecord method to process the
    // supplied user name and write out a greeting to
    // the user by calling the WriteObject method.
    protected override void ProcessRecord()
    {
      WriteObject("Hello " + name + "! ");
      if (employee)
      {
        WriteObject("Department: " + context.Department);
      }
    }
  }

  // Define the dynamic parameters to be added
  public class SendGreetingCommandDynamicParameters
  {
    [Parameter]
    [ValidateSet ("Marketing", "Sales", "Development")]
    public string Department
    {
      get { return department; }
      set { department = value; }
    }
    private string department;
  }
}

Lásd még:See Also

System. Management. Automation. RuntimedefinedparameterdictionarySystem.Management.Automation.Runtimedefinedparameterdictionary

System. Management. Automation. Idynamicparameters. Getdynamicparameters *System.Management.Automation.Idynamicparameters.Getdynamicparameters*

Parancsmagok dinamikus paramétereiCmdlet Dynamic Parameters

Windows PowerShell SDKWindows PowerShell SDK