Sdílet prostřednictvím


Dynamické parametry rutiny

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.

Viz také