Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Rutiny mohou definovat parametry, které jsou uživateli k dispozici za zvláštních podmínek, například když je argument jiného parametru konkrétní hodnotou. Tyto parametry se přidají za běhu a označují se jako dynamické parametry, protože se přidají jenom v případě potřeby. Můžete například navrhnout rutinu, která přidá několik parametrů pouze v případě, že je zadaný konkrétní parametr přepínače.
Poznámka:
Zprostředkovatelé a funkce PowerShellu můžou také definovat dynamické parametry.
Dynamické parametry v rutinách PowerShellu
PowerShell používá dynamické parametry v několika rutinách poskytovatele. Například rutiny Get-Item a Get-ChildItem přidávají parametr CodeSigningCert za běhu, když parametr Path určuje cestu poskytovatele Certificate. Pokud parametr Path určuje cestu pro jiného zprostředkovatele, není parametr CodeSigningCert k dispozici.
Následující příklady ukazují, jak se při spuštění Get-Item přidá parametr CodeSigningCert za běhu.
V tomto příkladu modul runtime PowerShellu přidal parametr a rutina je úspěšná.
Get-Item -Path Cert:\CurrentUser -CodeSigningCert
Location : CurrentUser
StoreNames : {SmartCardRoot, UserDS, AuthRoot, CA...}
V tomto příkladu je zadaná jednotka FileSystem a vrátí se chyba. Chybová zpráva indikuje, že CodeSigningCert parametr nebyl nalezen.
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
Podpora dynamických parametrů
Aby bylo možné podporovat dynamické parametry, musí být do kódu rutiny zahrnuty následující prvky.
Rozhraní
System.Management.Automation.IDynamicParameters. Toto rozhraní poskytuje metodu, která načte dynamické parametry.
Například:
public class SendGreetingCommand : Cmdlet, IDynamicParameters
Metoda
System.Management.Automation.IDynamicParameters.GetDynamicParameters. Tato metoda načte objekt, který obsahuje definice dynamických parametrů.
Například:
public object GetDynamicParameters()
{
if (employee)
{
context= new SendGreetingCommandDynamicParameters();
return context;
}
return null;
}
private SendGreetingCommandDynamicParameters context;
Třída
Třída, která definuje dynamické parametry, které se mají přidat. Tato třída musí obsahovat atribut Parametr pro každý parametr a všechny volitelné Alias a Ověřovací atributy, které rutina potřebuje.
Například:
public class SendGreetingCommandDynamicParameters
{
[Parameter]
[ValidateSet ("Marketing", "Sales", "Development")]
public string Department
{
get { return department; }
set { department = value; }
}
private string department;
}
Úplný příklad rutiny, která podporuje dynamické parametry, najdete v tématu Jak deklarovat dynamické parametry.