Dynamische parameters declareren
In dit voorbeeld ziet u hoe u dynamische parameters definieert die tijdens runtime aan de cmdlet worden toegevoegd. In dit voorbeeld wordt de Department parameter toegevoegd aan de cmdlet wanneer de gebruiker de Employee switchparameter opgeeft. Zie Dynamische parameters voor cmdlet voor meerinformatie over dynamische parameters.
Dynamische parameters definiƫren
Voeg in de cmdlet-klassedeclaratie de interface System.Management.Automation.Idynamicparameters toe, zoals wordt weergegeven.
public class SendGreetingCommand : Cmdlet, IDynamicParametersRoep de methode System.Management.Automation.Idynamicparameters.Getdynamicparameters* aan, die het object retourneert waarin de dynamische parameters zijn gedefinieerd. In dit voorbeeld wordt de methode aangeroepen wanneer de
Employeeparameter wordt opgegeven.public object GetDynamicParameters() { if (employee) { context= new SendGreetingCommandDynamicParameters(); return context; } return null; } private SendGreetingCommandDynamicParameters context;Declareer een klasse die de dynamische parameters definieert die moeten worden toegevoegd. U kunt de kenmerken gebruiken die u hebt gebruikt om de statische cmdlet-parameters te declaren om de dynamische parameters te declaren.
public class SendGreetingCommandDynamicParameters { [Parameter] [ValidateSet ("Marketing", "Sales", "Development")] public string Department { get { return department; } set { department = value; } } private string department; }
Voorbeeld
In dit voorbeeld wordt de Department parameter toegevoegd wanneer de gebruiker de parameter Employee opgeeft. De Department parameter is een optionele parameter en het kenmerk ValidateSet wordt gebruikt om de toegestane argumenten op te geven.
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;
}
}
Zie ook
System.Management.Automation.Runtimedefinedparameterdictionary
System.Management.Automation.Idynamicparameters.Getdynamicparameters*
Feedback
Feedback verzenden en weergeven voor