Come dichiarare i parametri dinamiciHow to Declare Dynamic Parameters

Questo esempio illustra come definire i parametri dinamici che vengono aggiunti al cmdlet in fase di esecuzione.This example shows how to define dynamic parameters that are added to the cmdlet at runtime. In questo esempio, il Department parametro viene aggiunto al cmdlet ogni volta che l'utente specifica il Employee parametro switch.In this example, the Department parameter is added to the cmdlet whenever the user specifies the Employee switch parameter. Per altre informazioni sui parametri dinamici, vedere parametri dinamici dei cmdlet.For more information about dynamic parameters, see Cmdlet Dynamic Parameters.

Per definire i parametri dinamiciTo define dynamic parameters

  1. Nella dichiarazione di classe del cmdlet aggiungere l'interfaccia System. Management. Automation. Idynamicparameters come illustrato.In the cmdlet class declaration, add the System.Management.Automation.Idynamicparameters interface as shown.

    public class SendGreetingCommand : Cmdlet, IDynamicParameters
    
  2. Chiamare il metodo System. Management. Automation. Idynamicparameters. Getdynamicparameters * , che restituisce l'oggetto in cui sono definiti i parametri dinamici.Call the System.Management.Automation.Idynamicparameters.Getdynamicparameters* method, which returns the object in which the dynamic parameters are defined. In questo esempio, il metodo viene chiamato quando Employee viene specificato il parametro.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. Dichiarare una classe che definisce i parametri dinamici da aggiungere.Declare a class that defines the dynamic parameters to be added. È possibile utilizzare gli attributi utilizzati per dichiarare i parametri del cmdlet statici per dichiarare i parametri dinamici.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;
    }
    

EsempioExample

In questo esempio, il Department parametro viene aggiunto ogni volta che l'utente specifica il Employee parametro.In this example, the Department parameter is added whenever the user specifies the Employee parameter. Il Department parametro è un parametro facoltativo e l'attributo ValidateSet viene usato per specificare gli argomenti consentiti.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;
  }
}

Vedere ancheSee Also

System. Management. Automation. RuntimeDefinedParameterDictionarySystem.Management.Automation.Runtimedefinedparameterdictionary

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

Parametri dinamici dei cmdletCmdlet Dynamic Parameters

Windows PowerShell SDKWindows PowerShell SDK