Dinamikus paraméterek deklarálása
Ez a példa bemutatja, hogyan definiálhat a parancsmaghoz futásidőben hozzáadott dinamikus paramétereket. Ebben a példában a paramétert a rendszer hozzáadja a parancsmaghoz, amikor a felhasználó Department
megadja a Employee
kapcsolóparamétert. További információ a dinamikus paraméterekről: Cmdlet Dynamic Parameters.
Dinamikus paraméterek definiálása
A parancsmag osztálydeklarációjában adja hozzá a System.Management.Automation.Idynamicparameters felületet az ábrán látható módon.
public class SendGreetingCommand : Cmdlet, IDynamicParameters
Hívja meg a System.Management.Automation.Idynamicparameters.Getdynamicparameters* metódust, amely azt az objektumot adja vissza, amelyben a dinamikus paraméterek definiálva vannak. Ebben a példában a metódust a paraméter megadásakor
Employee
hívjuk meg.public object GetDynamicParameters() { if (employee) { context= new SendGreetingCommandDynamicParameters(); return context; } return null; } private SendGreetingCommandDynamicParameters context;
Deklarálhat egy osztályt, amely meghatározza a hozzáadható dinamikus paramétereket. A statikus parancsmag-paraméterek deklarálhatóak a dinamikus paraméterek deklarálása érdekében használt attribútumokkal.
public class SendGreetingCommandDynamicParameters { [Parameter] [ValidateSet ("Marketing", "Sales", "Development")] public string Department { get { return department; } set { department = value; } } private string department; }
Példa
Ebben a példában a Department
paramétert akkor adhatja hozzá, amikor a felhasználó megadja a Employee
paramétert. A paraméter nem kötelező paraméter, és a Department
ValidateSet attribútummal adhatók meg az engedélyezett argumentumok.
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;
}
}
Lásd még:
System.Management.Automation.Runtimedefinedparameterdictionary
System.Management.Automation.Idynamicparameters.Getdynamicparameters*
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: