Megosztás a következőn keresztül:


Parancsmag dinamikus paraméterei

A parancsmagok olyan paramétereket határozhatnak meg, amelyek speciális feltételek mellett érhetők el a felhasználó számára, például ha egy másik paraméter argumentuma egy adott érték. Ezek a paraméterek futásidőben vannak hozzáadva, és dinamikus paramétereknek nevezik őket, mert csak szükség esetén vannak hozzáadva. Létrehozhat például egy parancsmagot, amely csak egy adott kapcsolóparaméter megadásakor ad hozzá több paramétert.

Megjegyzés

A szolgáltatók és a PowerShell-függvények dinamikus paramétereket is definiálhatnak.

Dinamikus paraméterek a PowerShell-parancsmagokban

A PowerShell több szolgáltatói parancsmagjában dinamikus paramétereket használ. A Get-Item és Get-ChildItem parancsmagok például CodeSigningCert paramétert adnak hozzá futásidőben, amikor a Elérési út paraméter megadja a tanúsítvány szolgáltatói elérési útját. Ha a Elérési út paraméter egy másik szolgáltató elérési útját adja meg, a CodeSigningCert paraméter nem érhető el.

Az alábbi példák azt mutatják be, hogy a CodeSigningCert paraméter hogyan lesz hozzáadva futásidőben Get-Item futtatásakor.

Ebben a példában a PowerShell-futtatókörnyezet hozzáadta a paramétert, és a parancsmag sikeres.

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. A hibaüzenet azt jelzi, hogy a CodeSigningCert paraméter nem található.

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ása

A dinamikus paraméterek támogatásához a következő elemeket kell tartalmaznia a parancsmagkódban.

Interfész

System.Management.Automation.IDynamicParameters. Ez az interfész biztosítja a dinamikus paramétereket lekérő metódust.

Például:

public class SendGreetingCommand : Cmdlet, IDynamicParameters

Metódus

System.Management.Automation.IDynamicParameters.GetDynamicParameters. Ez a metódus lekéri a dinamikus paraméterdefiníciókat tartalmazó objektumot.

Például:

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

Osztály

A hozzáadni kívánt dinamikus paramétereket meghatározó osztály. Ennek az osztálynak tartalmaznia kell egy Paraméter attribútumot minden paraméterhez, valamint a parancsmaghoz szükséges Alias és Validation attribútumokat.

Például:

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 talál.

Lásd még