Cómo declarar los parámetros dinámicos
En este ejemplo se muestra cómo definir parámetros dinámicos que se agregan al cmdlet en tiempo de ejecución. En este ejemplo, el parámetro Department
se agrega al cmdlet cada vez que el usuario especifica el parámetro switch de Employee
. Para obtener más información sobre los parámetros dinámicos, consulte Cmdlet Dynamic Parameters.
Para definir parámetros dinámicos
En la declaración de clase de cmdlet, agregue la interfaz System.Management.Automation.IDynamicParameters tal como se muestra.
public class SendGreetingCommand : Cmdlet, IDynamicParameters
Llame al método System.Management.Automation.IDynamicParameters.GetDynamicParameters*, que devuelve el objeto en el que se definen los parámetros dinámicos. En este ejemplo, se llama al método cuando se especifica el parámetro
Employee
.public object GetDynamicParameters() { if (employee) { context= new SendGreetingCommandDynamicParameters(); return context; } return null; } private SendGreetingCommandDynamicParameters context;
Declare una clase que defina los parámetros dinámicos que se van a agregar. Puede usar los atributos que usó para declarar los parámetros del cmdlet estático para declarar los parámetros dinámicos.
public class SendGreetingCommandDynamicParameters { [Parameter] [ValidateSet ("Marketing", "Sales", "Development")] public string Department { get { return department; } set { department = value; } } private string department; }
Ejemplo
En este ejemplo, se agrega el parámetro Department
cada vez que el usuario especifica el parámetro Employee
. El parámetro Department
es un parámetro opcional y el atributo ValidateSet se usa para especificar los argumentos permitidos.
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;
}
}
Véase también
- System.Management.Automation.RuntimeDefinedParameterDictionary
- System.Management.Automation.IDynamicParameters.GetDynamicParameters*
- de parámetros dinámicos del cmdlet de
- del SDK de Windows PowerShell