Jak zadeklarować parametry dynamiczneHow to Declare Dynamic Parameters

Ten przykład pokazuje, jak definiować parametry dynamiczne, które są dodawane do polecenia cmdlet w czasie wykonywania.This example shows how to define dynamic parameters that are added to the cmdlet at runtime. W tym przykładzie Department parametr jest dodawany do polecenia cmdlet, za każdym razem, gdy użytkownik określi Employee parametr przełącznika.In this example, the Department parameter is added to the cmdlet whenever the user specifies the Employee switch parameter. Aby uzyskać więcej informacji na temat parametrów dynamicznych, zobacz parametry dynamiczne poleceń cmdlet.For more information about dynamic parameters, see Cmdlet Dynamic Parameters.

Aby zdefiniować parametry dynamiczneTo define dynamic parameters

  1. W deklaracji klasy poleceń cmdlet Dodaj Interfejs System. Management. Automation. Idynamicparameters , jak pokazano.In the cmdlet class declaration, add the System.Management.Automation.Idynamicparameters interface as shown.

    public class SendGreetingCommand : Cmdlet, IDynamicParameters
    
  2. Wywołaj metodę System. Management. Automation. Idynamicparameters. Getdynamicparameters * , która zwraca obiekt, w którym są zdefiniowane parametry dynamiczne.Call the System.Management.Automation.Idynamicparameters.Getdynamicparameters* method, which returns the object in which the dynamic parameters are defined. W tym przykładzie metoda jest wywoływana, gdy Employee parametr jest określony.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. Zadeklaruj klasę, która definiuje parametry dynamiczne do dodania.Declare a class that defines the dynamic parameters to be added. Można użyć atrybutów, które zostały użyte do zadeklarować statyczne parametry polecenia cmdlet do deklarowania parametrów dynamicznych.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;
    }
    

PrzykładExample

W tym przykładzie Department parametr jest dodawany za każdym razem, gdy użytkownik określi Employee parametr.In this example, the Department parameter is added whenever the user specifies the Employee parameter. DepartmentParametr jest opcjonalnym parametrem, a atrybut ValidateSet służy do określania dozwolonych argumentów.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;
  }
}

Zobacz teżSee Also

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

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

Dynamiczne parametry poleceń cmdletCmdlet Dynamic Parameters

Windows PowerShell SDKWindows PowerShell SDK