Sdílet prostřednictvím


Typy parametrů rutin

Toto téma popisuje různé typy parametrů, které můžete deklarovat v rutinách. Parametry rutiny můžou být poziční, pojmenované, povinné, volitelné nebo parametry přepínače.

Poziční a pojmenované parametry

Všechny parametry rutiny jsou pojmenované nebo poziční parametry. Pojmenovaný parametr vyžaduje, abyste při volání rutiny zadali název a argument parametru. Poziční parametr vyžaduje pouze zadání argumentů v relativním pořadí. Systém pak mapuje první nepojmenovaný argument na první poziční parametr. Systém mapuje druhý nepojmenovaný argument na druhý nepojmenovaný parametr atd. Ve výchozím nastavení jsou všechny parametry rutin pojmenované.

Pokud chcete definovat pojmenovaný parametr, v deklaraci atributu parametru vynecháte klíčové slovo Position, jak je znázorněno v následující deklaraci parametru.

[Parameter(ValueFromPipeline=true)]
public string UserName
{
  get { return userName; }
  set { userName = value; }
}
private string userName;

Chcete-li definovat poziční parametr, přidejte do deklarace atributu parametru klíčové slovo Position a zadejte pozici. V následující ukázce je parametr UserName deklarován jako poziční parametr s pozicí 0. To znamená, že první argument volání je automaticky vázán na tento parametr.

[Parameter(Position = 0)]
public string UserName
{
  get { return userName; }
  set { userName = value; }
}
private string userName;

Poznámka:

Dobrý návrh rutin doporučuje, aby se nejčastěji používané parametry deklarovaly jako poziční parametry, aby uživatel při spuštění rutiny nemusel zadávat název parametru.

Poziční a pojmenované parametry přijímají jednotlivé argumenty nebo více argumentů oddělených čárkami. Více argumentů je povoleno pouze v případě, že parametr přijímá kolekci, například pole řetězců. Ve stejné rutině můžete kombinovat poziční a pojmenované parametry. V tomto případě systém nejprve načte pojmenované argumenty a pokusí se namapovat zbývající nepojmenované argumenty na poziční parametry.

Následující příkazy ukazují různé způsoby, kterými můžete zadat jeden a více argumentů pro parametry Get-Command rutiny. Všimněte si, že v posledních dvou ukázkách není nutné zadávat -Name, protože parametr Name je definován jako poziční parametr.

Get-Command -Name Get-Service
Get-Command -Name Get-Service,Set-Service
Get-Command Get-Service
Get-Command Get-Service,Set-Service

Povinné a volitelné parametry

Parametry rutiny můžete také definovat jako povinné nebo volitelné parametry. (Povinný parametr musí být zadán před tím, než modul runtime PowerShellu vyvolá rutinu.) Ve výchozím nastavení jsou parametry definované jako volitelné.

Chcete-li definovat povinný parametr, přidejte klíčové slovo Mandatory v deklaraci atributu Parametr a nastavte jej na true, jak je znázorněno v následující deklaraci parametru.

[Parameter(Position = 0, Mandatory = true)]
public string UserName
{
  get { return userName; }
  set { userName = value; }
}
private string userName;

Chcete-li definovat volitelný parametr, vynecháte klíčové slovo Mandatory v deklaraci atributu parametru, jak je znázorněno v následující deklaraci parametru.

[Parameter(Position = 0)]
public string UserName
{
  get { return userName; }
  set { userName = value; }
}
private string userName;

Parametry přepínače

PowerShell poskytuje typ System.Management.Automation.SwitchParameter, který umožňuje definovat parametr, jehož výchozí hodnota false, pokud není parametr zadán při zavolání rutiny. Kdykoli je to možné, použijte místo logických parametrů parametry přepínače.

Podívejte se na následující příklad. Mnoho rutin PowerShellu vrací výstup. Tyto rutiny ale mají parametr přepínače PassThru, který přepíše výchozí chování. Když použijete parametr PassThru, rutina vrátí výstupní objekty do kanálu.

Chcete-li definovat parametr switch, deklarujte vlastnost jako typ [SwitchParameter], jak je znázorněno v následující ukázce.

[Parameter()]
public SwitchParameter GoodBye
{
  get { return goodbye; }
  set { goodbye = value; }
}
private bool goodbye;

Pokud chcete, aby rutina fungovala s parametrem, když je zadána, použijte následující strukturu v rámci jedné ze vstupních metod zpracování.

protected override void ProcessRecord()
{
  WriteObject("Switch parameter test: " + userName + ".");
  if (goodbye)
  {
    WriteObject(" Goodbye!");
  }
} // End ProcessRecord

Ve výchozím nastavení jsou parametry přepínače vyloučeny z pozičních parametrů. můžete přepsat, že v atributu Parametr, ale může zmást uživatele.

Navrhujte parametry přepínače tak, aby použití parametru změnilo výchozí chování příkazu na méně běžný nebo složitější režim. Nejjednodušším chováním příkazu by mělo být výchozí chování, které nevyžaduje použití parametrů přepínače. Založte chování řízené přepínačem na hodnotě přepínače, ne přítomnost parametru.

Existuje několik způsobů, jak otestovat přítomnost parametrů přepínače:

  • Invocation.BoundParameters obsahuje název parametru přepínače jako klíč.
  • PSCmdlet.ParameterSetName, když přepínač definuje jedinečnou sadu parametrů

Můžete například zadat explicitní hodnotu přepínače pomocí -MySwitch:$false nebo splattingu. Pokud testujete pouze přítomnost parametru, příkaz se chová, jako by hodnota přepínače byla $true místo $false.

Viz také

psaní rutiny Prostředí Windows PowerShell