Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det här exemplet visar hur du definierar dynamiska parametrar som läggs till i cmdleten vid körning. I det här exemplet läggs parametern Department till i cmdleten när användaren anger parametern Employee switch. Mer information om dynamiska parametrar finns i Dynamiska cmdletar.
Så här definierar du dynamiska parametrar
I cmdlet-klassdeklarationen lägger du till gränssnittet System.Management.Automation.IDynamicParameters som visas.
public class SendGreetingCommand : Cmdlet, IDynamicParametersAnropa metoden System.Management.Automation.IDynamicParameters.GetDynamicParameters*, som returnerar det objekt där de dynamiska parametrarna definieras. I det här exemplet anropas metoden när parametern
Employeeanges.public object GetDynamicParameters() { if (employee) { context= new SendGreetingCommandDynamicParameters(); return context; } return null; } private SendGreetingCommandDynamicParameters context;Deklarera en klass som definierar de dynamiska parametrar som ska läggas till. Du kan använda de attribut som du använde för att deklarera de statiska cmdlet-parametrarna för att deklarera de dynamiska parametrarna.
public class SendGreetingCommandDynamicParameters { [Parameter] [ValidateSet ("Marketing", "Sales", "Development")] public string Department { get { return department; } set { department = value; } } private string department; }
Exempel
I det här exemplet läggs parametern Department till när användaren anger parametern Employee. Parametern Department är en valfri parameter och attributet ValidateSet används för att ange de tillåtna argumenten.
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;
}
}