PowerShell kvíz – a modří už vědí?

Nedávno jsem narazil na „záhadu“. Schválně jestli jí přijdete na kloub. 😊 Bude to jednoduchá funkce s jedním řádkem v těle, takže se nebojte.

Nejdřív první příklad:

function ConvertTo-LowerCase {

param (

[string] $InputString

)

return $InputString.ToLower()

}

Write-Output (ConvertTo-LowerCase -InputString “AbCdEfGh”)

Co myslíte, že ten kód vrátí? Správně, „abcdefgh“. Tak, a teď ta slibovaná záhada. Zkusme to s velkými písmeny:

function ConvertTo-UpperCase {

param (

[string] $Input

)

return $Input.ToUpper()

}

Write-Output (ConvertTo-UpperCase -Input “AbCdEfGh”)

Co myslíte, že ten kód vrátí? Koukněte pozorně a přemýšlejte 😊 No a pak chvilku scrollujte pro správnou odpověď.

Jestli jste si mysleli, že kód vrátí „ABCDEFGH“, vězte, že tomu tak není.

Kód nevrátí nic. Vůbec nic. Dokonce i když ten parametr jen vypíšete (bez jakýchkoliv úprav), nevrátí proste NIC. Ani neskončí chybou. Vypadá to, jako kdyby PowerShell vyhodnotil, že něco takového nestojí za zpracování.

A proč? Dávejte si pozor, aby se parametry ve vašich funkcích nejmenovaly Input. Je to automatická proměnná. Detaily zde: https://docs.microsoft.com/en-us/previous-versions//dd347675(v=technet.10)?redirectedfrom=MSDN

Tzn. stačí parametr přejmenovat a už to funguje. On se ten parametr stejně měl jmenovat nějak líp, takže dobře mi tak.

I work for Joyful Craftsmen as a Data Engineer. I like Microsoft technologies (SQL Server, .NET), Azure and lot of other. I also like automating things (and DevOps generally).

PETR PAŘÍK
Data Engineer
LinkedIn

Leave a Reply

Your email address will not be published. Required fields are marked *

Fill out this field
Fill out this field
Please enter a valid email address.
You need to agree with the terms to proceed