Parancsmagok 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 nevezzük őket, mert csak szükség esetén kerülnek hozzáadásra. Például olyan parancsmagot tervezhet, amely csak akkor ad hozzá több paramétert, ha meg van adva egy adott kapcsolóparaméter.
Megjegyzés
A szolgáltatók és a PowerShell-függvények dinamikus paramétereket is meghatároznak.
Dinamikus paraméterek a PowerShell-parancsmagokban
A PowerShell számos szolgáltatói parancsmagban dinamikus paramétereket használ. Például a és a parancsmag hozzáad egy Get-Item
Get-ChildItem
CodeSigningCert paramétert futásidőben, amikor a Path paraméter megadja a tanúsítványszolgáltató elérési útját. Ha a Path 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 bemutatják, hogyan történik a CodeSigningCert paraméter hozzáadása futásidőben Get-Item
futtatáskor.
Ebben a példában a PowerShell-futtatás hozzáadta a paramétert, és a parancsmag futtatása sikeres volt.
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 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 parancsmag kódban.
Interfész
System.Management.Automation.IDynamicParameters. Ez az interfész biztosítja a dinamikus paramétereket lekért 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
Egy osztály, amely meghatározza a hozzáadható dinamikus paramétereket. Ennek az osztálynak tartalmaznia kell egy Paraméter attribútumot minden paraméterhez, valamint az esetlegesen szükséges Alias és Validation attribútumokat, amelyekre a parancsmagnak szüksége van.
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 lásd: Dinamikus paraméterek deklarálása.
Lásd még
System.Management.Automation.IDynamicParameters
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: