Parancsmag dinamikus paramétereiCmdlet dynamic parameters

A parancsmagok meghatározhatják azokat a paramétereket, amelyek a felhasználó számára speciális feltételek mellett érhetők el, például ha egy másik paraméter argumentuma egy adott érték.Cmdlets can define parameters that are available to the user under special conditions, such as when the argument of another parameter is a specific value. Ezeket a paramétereket a rendszer futásidőben adja hozzá, és dinamikus paramétereknek nevezzük, mivel ezek csak szükség esetén lesznek hozzáadva.These parameters are added at runtime and are referred to as dynamic parameters because they're only added when needed. Tervezhet például olyan parancsmagot, amely több paramétert ad meg, ha meg van adva egy adott kapcsoló paraméter.For example, you can design a cmdlet that adds several parameters only when a specific switch parameter is specified.

Megjegyzés

A szolgáltatók és a PowerShell-függvények dinamikus paramétereket is meghatározhatnak.Providers and PowerShell functions can also define dynamic parameters.

Dinamikus paraméterek a PowerShell-parancsmagokbanDynamic parameters in PowerShell cmdlets

A PowerShell dinamikus paramétereket használ számos szolgáltatói parancsmagban.PowerShell uses dynamic parameters in several of its provider cmdlets. A és a parancsmag például a Get-Item Get-ChildItem CodeSigningCert paramétert adja hozzá futásidőben, ha a path paraméter megadja a hitelesítésszolgáltató elérési útját.For example, the Get-Item and Get-ChildItem cmdlets add a CodeSigningCert parameter at runtime when the Path parameter specifies the Certificate provider path. Ha a path paraméter egy másik szolgáltató elérési útját határozza meg, a CodeSigningCert paraméter nem érhető el.If the Path parameter specifies a path for a different provider, the CodeSigningCert parameter isn't available.

Az alábbi példák azt mutatják be, hogy a CodeSigningCert paraméter Hogyan vehető fel futásidőben a Get-Item futtatáskor.The following examples show how the CodeSigningCert parameter is added at runtime when Get-Item is run.

Ebben a példában a PowerShell-futtatókörnyezet hozzáadta a paramétert, és a parancsmag sikeres.In this example, the PowerShell runtime has added the parameter and the cmdlet is successful.

Get-Item -Path cert:\CurrentUser -CodeSigningCert
Location   : CurrentUser
StoreNames : {SmartCardRoot, UserDS, AuthRoot, CA...}

Ebben a példában egy fájlrendszer -meghajtó van megadva, és a rendszer hibát ad vissza.In this example, a FileSystem drive is specified and an error is returned. A hibaüzenet azt jelzi, hogy a CodeSigningCert paraméter nem található.The error message indicates that the CodeSigningCert parameter can't be found.

Get-Item -Path C:\ -CodeSigningCert
Get-Item : A parameter cannot be found that matches parameter name 'codesigningcert'.
At line:1 char:37
+  get-item -path C:\ -codesigningcert <<<<
--------
    CategoryInfo          : InvalidArgument: (:) [Get-Item], ParameterBindingException
    FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetItemCommand

Dinamikus paraméterek támogatásaSupport for dynamic parameters

A dinamikus paraméterek támogatásához a következő elemeknek szerepelniük kell a parancsmag kódjában.To support dynamic parameters, the following elements must be included in the cmdlet code.

InterfészInterface

System. Management. Automation. IDynamicParameters.System.Management.Automation.IDynamicParameters. Ez az interfész biztosítja a dinamikus paraméterek lekérésére szolgáló metódust.This interface provides the method that retrieves the dynamic parameters.

Például:For example:

public class SendGreetingCommand : Cmdlet, IDynamicParameters

MódszerMethod

System. Management. Automation. IDynamicParameters. GetDynamicParameters.System.Management.Automation.IDynamicParameters.GetDynamicParameters. Ez a metódus lekéri a dinamikus paraméterek definícióit tartalmazó objektumot.This method retrieves the object that contains the dynamic parameter definitions.

Például:For example:

 public object GetDynamicParameters()
 {
   if (employee)
   {
     context= new SendGreetingCommandDynamicParameters();
     return context;
   }
   return null;
}
private SendGreetingCommandDynamicParameters context;

OsztályClass

Egy osztály, amely meghatározza a hozzáadandó dinamikus paramétereket.A class that defines the dynamic parameters to be added. Ennek az osztálynak tartalmaznia kell egy paraméter -attribútumot az egyes paraméterekhez, valamint a parancsmaghoz szükséges nem kötelező aliasokat és érvényesítési attribútumokat.This class must include a Parameter attribute for each parameter and any optional Alias and Validation attributes that are needed by the cmdlet.

Például:For example:

public class SendGreetingCommandDynamicParameters
{
  [Parameter]
  [ValidateSet ("Marketing", "Sales", "Development")]
  public string Department
  {
    get { return department; }
    set { department = value; }
  }
  private string department;
}

A dinamikus paramétereket támogató parancsmagok teljes példáját a dinamikus paraméterek deklarálásacímű témakörben tekintheti meg.For a complete example of a cmdlet that supports dynamic parameters, see How to Declare Dynamic Parameters.

Lásd mégSee also

System. Management. Automation. IDynamicParametersSystem.Management.Automation.IDynamicParameters

System. Management. Automation. IDynamicParameters. GetDynamicParametersSystem.Management.Automation.IDynamicParameters.GetDynamicParameters

Dinamikus paraméterek deklarálásaHow to Declare Dynamic Parameters

Windows PowerShell-parancsmag írásaWriting a Windows PowerShell Cmdlet