about_Parameter_Binding

Krátký popis

Vazba parametru je proces, který PowerShell používá k určení, která sada parametrů se používá, a k přidružení hodnot (svázání) k parametrům příkazu. Tyto hodnoty můžou pocházet z příkazového řádku a kanálu.

Dlouhý popis

Proces vazby parametrů začíná vazbou argumentů příkazového řádku.

  1. Vytvoření vazby pojmenovaných parametrů

    Na příkazovém řádku vyhledejte necitované tokeny, které začínají pomlčkou. Pokud token končí dvojtečkam, je vyžadován argument. Pokud neexistuje dvojtečka, podívejte se na typ parametru a zjistěte, jestli je argument povinný. Pokud je hodnota požadovaná, pokuste se převést typ argumentu na typ požadovaný parametrem a převod je úspěšný, vytvořte vazbu parametru.

  2. Vytvoření vazby pozičních parametrů

    Pokud existují nějaké nepoužívané argumenty příkazového řádku, vyhledejte nevázané parametry, které mají poziční parametry, a pokuste se je svázat.

Po vytvoření vazby argumentů příkazového řádku se PowerShell pokusí svázat libovolný vstup kanálu. Existují dva způsoby, jak jsou hodnoty vázané z kanálu. Parametry, které přijímají vstup kanálu, mají jeden nebo oba následující atributy:

  • ValueFromPipeline – hodnota z kanálu je vázána na parametr na základě jeho typu. Typ argumentu musí odpovídat typu parametru.
  • ValueFromPipelineByPropertyName – hodnota z kanálu je svázaná s parametrem na základě jeho názvu. Objekt v kanálu musí mít vlastnost, která odpovídá názvu parametru nebo některému z jeho aliasů. Typ vlastnosti se musí shodovat nebo musí být konvertibilní na typ parametru.

PowerShell se pokusí svázat vstup kanálu v následujícím pořadí:

  1. Pokuste se svázat ValueFromPipeline parametry bez převodu typu:

    Vytvořte vazbu z kanálu podle hodnoty s přesnou shodu typu. Pokud má příkaz vstup kanálu a stále existují nevázané parametry, zkuste vytvořit vazbu na parametr, který přesně odpovídá typu.

  2. Pokuste se svázat ValueFromPipelineByPropertyName parametry bez převodu typu:

    Pokud se nenajde žádná shoda s hodnotou, vytvořte vazbu z kanálu podle názvu s přesnou shodou. Vyhledejte vlastnost vstupního objektu, která odpovídá názvu parametru nebo jednoho z jeho aliasů. Pokud se typy přesně shodují, vytvořte vazbu parametru.

  3. Pokud vstup kanálu nebyl vázán, zkuste svázat ValueFromPipeline parametry s převodem typu:

    Pokus o převod vstupu kanálu na požadovaný typ Pokud převod selže, parametr není vázán.

  4. Pokud vstup kanálu nebyl vázán, zkuste svázat ValueFromPipelineByPropertyName parametry s převodem typu:

    Název vlastnosti se musí shodovat s názvem parametru nebo jednoho z jeho aliasů. Pokud se typ vstupu neshoduje, pokuste se vstup převést na odpovídající typ. Pokud převod selže, parametr není vázán.

Vizualizace vazby parametrů

Řešení potíží s vazbou parametrů může být náročné. Pomocí rutiny Trace-Command můžete vizualizovat proces vazby parametrů. Následující příklad ukazuje, jak trasovat vazbu parametrů pro jednoduchý kanál.

Trace-Command -PSHost -Name ParameterBinding -Expression {
    Get-Item *.txt | Remove-Item
}

Výstup ukazuje každý krok procesu vazby parametrů pro příkazy ve výrazu. Výstup může být podrobný, ale pomůže vám pochopit, proč se parametr neváže podle očekávání. Úplný příklad najdete v článku Vizualizujte vazby parametrů.