Bagikan melalui


Cara Mendeklarasikan Parameter Dinamis

Contoh ini menunjukkan cara menentukan parameter dinamis yang ditambahkan ke cmdlet saat runtime. Dalam contoh ini, parameter Department ditambahkan ke cmdlet setiap kali pengguna menentukan parameter sakelar Employee. Untuk informasi selengkapnya tentang parameter dinamis, lihat Parameter Dinamis Cmdlet .

Untuk menentukan parameter dinamis

  1. Dalam deklarasi kelas cmdlet, tambahkan antarmuka System.Management.Automation.IDynamicParameters seperti yang ditunjukkan.

    public class SendGreetingCommand : Cmdlet, IDynamicParameters
    
  2. Panggil metode System.Management.Automation.IDynamicParameters.GetDynamicParameters*, yang mengembalikan objek tempat parameter dinamis ditentukan. Dalam contoh ini, metode dipanggil ketika parameter Employee ditentukan.

    public object GetDynamicParameters()
    {
        if (employee)
        {
          context= new SendGreetingCommandDynamicParameters();
          return context;
        }
        return null;
    }
    private SendGreetingCommandDynamicParameters context;
    
  3. Deklarasikan kelas yang menentukan parameter dinamis yang akan ditambahkan. Anda dapat menggunakan atribut yang Anda gunakan untuk mendeklarasikan parameter cmdlet statis untuk mendeklarasikan parameter dinamis.

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

Contoh

Dalam contoh ini, parameter Department ditambahkan setiap kali pengguna menentukan parameter Employee. Parameter Department adalah parameter opsional, dan atribut ValidateSet digunakan untuk menentukan argumen yang diizinkan.

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;

    // Override 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;
  }
}

Lihat Juga