o_vazbě_parametrů

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 mohou pocházet z příkazového řádku a datového toku.

Dlouhý popis

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

  1. Propojte pojmenované parametry

    Na příkazovém řádku vyhledejte necitované tokeny, které začínají pomlčkou. Pokud token končí dvojtečkou, 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. Pokud se převod podaří, proveďte přiřazení parametru.

  2. Svázat poziční parametry

    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 jakýkoliv vstup kanálu. Existují dva způsoby, jak jsou hodnoty převáděny z pipeline. Parametry, které přijímají vstup kanálu, mají jeden nebo oba z následujících atributů:

  • ValueFromPipeline – hodnota z kanálu je svázaná s parametrem 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 vytvořit vazbu ValueFromPipeline parametrů bez převodu typu:

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

  2. Pokuste se vytvořit vazbu ValueFromPipelineByPropertyName parametrů 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 potrubí nebyl vázán, zkuste vázat parametry ValueFromPipeline s převodem typu.

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

  4. Pokud vstup potrubí nebyl vázán, zkuste vázat parametry ValueFromPipelineByPropertyName 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é. K vizualizaci procesu vazby parametrů můžete použít rutinu Trace-Command. 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 přiřazování parametrů pro příkazy ve výrazu. Výstup může být podrobný a může vám pomoci pochopit, proč se parametr neváže podle očekávání. Úplný příklad najdete v článku Vizualizovat vazby parametrů.