Sady parametrů rutin

PowerShell používá sady parametrů k tomu, abyste mohli napsat jednu rutinu, která může provádět různé akce pro různé scénáře. Sady parametrů umožňují uživateli zveřejnit různé parametry. A k vrácení různých informací na základě parametrů zadaných uživatelem.

Příklady sad parametrů

Například rutina PowerShellu vrací různé informace v závislosti na tom, jestli uživatel Get-EventLog specifikuje parametr List nebo LogName. Pokud je zadaný parametr List, rutina vrátí informace o samotných souborech protokolu, ale ne informace o události, které obsahují. Pokud je zadaný parametr LogName, rutina vrátí informace o událostech v určitém protokolu událostí. Parametry List a LogName identifikují dvě samostatné sady parametrů.

Jedinečný parametr

Každá sada parametrů musí mít jedinečný parametr, který modul runtime PowerShellu používá ke vystavení příslušné sady parametrů. Pokud je to možné, měl by být jedinečný parametr povinným parametrem. Pokud je parametr povinný, musí uživatel zadat parametr a modul runtime PowerShellu tento parametr použije k identifikaci sady parametrů. Jedinečný parametr nemůže být povinný, pokud je vaše rutina navržená ke spuštění bez zadání parametrů.

Více sad parametrů

Na následujícím obrázku je v levém sloupci tři platné sady parametrů. Parametr A je jedinečný pro první sadu parametrů, parametr B je jedinečný pro druhou sadu parametrů a parametr C je jedinečný pro třetí sadu parametrů. V pravém sloupci nemají sady parametrů jedinečný parametr.

Obrázek sad parametrů

Požadavky na sadu parametrů

Následující požadavky platí pro všechny sady parametrů.

  • Každá sada parametrů musí mít alespoň jeden jedinečný parametr. Pokud je to možné, vytvořte tento parametr povinným parametrem.

  • Sada parametrů, která obsahuje více pozičních parametrů, musí definovat jedinečné pozice pro každý parametr. Žádné dva poziční parametry zadat stejnou pozici.

  • Pouze jeden parametr v sadě může deklarovat ValueFromPipeline klíčové slovo s hodnotou true . Klíčové slovo může definovat ValueFromPipelineByPropertyName více parametrů s hodnotou true .

  • Pokud pro parametr není zadaná žádná sada parametrů, patří parametr do všech sad parametrů.

Poznámka

Pro rutinu nebo funkci existuje limit 32 sad parametrů.

Výchozí sady parametrů

Pokud je definováno více sad parametrů, můžete k určení výchozí sady parametrů použít klíčové DefaultParameterSetName slovo atributu Cmdlet. PowerShell použije výchozí sadu parametrů, pokud na základě informací poskytnutých příkazem nemůže určit sadu parametrů, která se má použít. Další informace o atributu rutiny najdete v tématu Deklarace atributu rutiny.

Deklarace sad parametrů

Pokud chcete vytvořit sadu parametrů, musíte zadat klíčové slovo při deklaraci atributu Parameter pro každý ParameterSetName parametr v sadě parametrů. Pro parametry, které patří do více sad parametrů, přidejte atribut Parametr pro každou sadu parametrů. Tento atribut umožňuje definovat parametr odlišně pro každou sadu parametrů. Můžete například definovat parametr jako povinný v jedné sadě a volitelný v jiné. Každá sada parametrů ale musí obsahovat jeden jedinečný parametr. Další informace najdete v tématu Deklarace atributu parametru.

V následujícím příkladu je parametr UserName jedinečným parametrem sady parametrů a parametr ComputerName je jedinečný parametr sady Test01 Test02 parametrů. Parametr SharedParam patří do obou sad a je povinný pro sadu parametrů, ale volitelný Test01 pro sadu Test02 parametrů.

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

[Parameter(Position = 0, Mandatory = true, ParameterSetName = "Test02")]
public string ComputerName
{
  get { return computerName; }
  set { computerName = value; }
}
private string computerName;

[Parameter(Mandatory= true, ParameterSetName = "Test01")]
[Parameter(ParameterSetName = "Test02")]
public string SharedParam
{
    get { return sharedParam; }
    set { sharedParam = value; }
}
private string sharedParam;