Dynamické parametry rutin

Rutiny mohou definovat parametry, které jsou uživateli k dispozici za speciálních podmínek, například když je argument jiného parametru konkrétní hodnotou. Tyto parametry se přidávají za běhu a označují se jako dynamické parametry, protože se přidávají jenom v případě potřeby. Můžete například navrhnout rutinu, která přidá několik parametrů pouze v případě, že je zadán konkrétní parametr přepínače.

Poznámka

Zprostředkovatelé a funkce PowerShellu mohou také definovat dynamické parametry.

Dynamické parametry v rutinách PowerShellu

PowerShell používá dynamické parametry v několika rutinách zprostředkovatele. Například rutiny a přidávají parametr Get-Item Get-ChildItem CodeSigningCert za běhu, když parametr Path určuje cestu zprostředkovatele certifikátu. Pokud parametr Path určuje cestu pro jiného zprostředkovatele, není parametr CodeSigningCert dostupný.

Následující příklady ukazují, jak se při spuštění přidá parametr CodeSigningCert za Get-Item 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 značí, že se parametr CodeSigningCert nenašel.

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ů

Pro podporu dynamických parametrů musí být v 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ů.

Pří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é atributy Alias a Validation, 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é

System.Management.Automation.IDynamicParameters

System.Management.Automation.IDynamicParameters.GetDynamicParameters

Jak deklarovat dynamické parametry

Vytvoření rutiny Windows PowerShellu