Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.