Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo esempio illustra come definire parametri dinamici aggiunti al cmdlet in fase di esecuzione. In questo esempio, il parametro Department viene aggiunto al cmdlet ogni volta che l'utente specifica il parametro switch Employee. Per altre informazioni sui parametri dinamici, vedere parametri dinamici del cmdlet .
Per definire parametri dinamici
Nella dichiarazione di classe del cmdlet aggiungere l'interfaccia System.Management.Automation.IDynamicParameters come illustrato.
public class SendGreetingCommand : Cmdlet, IDynamicParametersChiamare il metodo System.Management.Automation.IDynamicParameters.GetDynamicParameters*, che restituisce l'oggetto in cui sono definiti i parametri dinamici. In questo esempio il metodo viene chiamato quando viene specificato il parametro
Employee.public object GetDynamicParameters() { if (employee) { context= new SendGreetingCommandDynamicParameters(); return context; } return null; } private SendGreetingCommandDynamicParameters context;Dichiarare una classe che definisce i parametri dinamici da aggiungere. È possibile usare gli attributi usati per dichiarare i parametri dei cmdlet statici per dichiarare i parametri dinamici.
public class SendGreetingCommandDynamicParameters { [Parameter] [ValidateSet ("Marketing", "Sales", "Development")] public string Department { get { return department; } set { department = value; } } private string department; }
Esempio
In questo esempio, il parametro Department viene aggiunto ogni volta che l'utente specifica il parametro Employee. Il parametro Department è un parametro facoltativo e l'attributo ValidateSet viene usato per specificare gli argomenti consentiti.
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;
}
}