porozumění funkcím v PowerShell
místo kopírování a vkládání stejného kódu znovu a znovu vytvořte funkci PowerShell.
Při prvním spuštění psaní PowerShell skripty, nejste nutně obavy o věci, jako jsou modularitu, znovupoužitelnost a „nejlepší praktiky.“Jen si namočíš nohy. Jak však čas plyne, brzy si uvědomíte, že se začnete opakovat v kódu.
všimnete si, že potřeba dělat totéž znovu a znovu se stále zvyšuje. Můžete jen zkopírovat a vložit stejný kód, ale není to udržitelné. Proč místo toho nevytvářet malé „stavební bloky“ v kódu, aby mohly být znovu použity? Je čas začít vytvářet funkce PowerShell.
funkce v PowerShell je seskupení kódu, které má volitelný vstup a výstup. Je to způsob, jak sbírat spoustu kódu vykonávat jedna nebo mnoho různých časech jen ukazuje na to místo duplikovat kód opakovaně.
základní funkce
v PowerShell jsou dva druhy funkcí. Máme“ základní “ funkci a pokročilou funkci. „Základní“ funkce jsou nejjednodušší formou funkce, kterou lze vytvořit. Nemají žádné z efektních vestavěných funkcí, které pokročilé funkce dělají. Je vytvořen nebo deklarován pomocí příkazu funkce následovaného sadou složených závorek.
funkce Do-Something {}
výše uvedené je technicky funkce, která může být volána vyvoláním Do-Something, ale jak zjistíte, nedělá to moc. Je to proto, že jsme nezahrnuli žádný kód uvnitř ke spuštění. Pojďme přidat nějaký jednoduchý kód dovnitř, aby se zajistilo, že něco udělá. Pro demonstraci použiji příkaz Write-Host, který zapisuje text do konzoly PowerShell.
funkce Do-Something {
Write-Host ‚ udělal jsem něco!‘
}
PS > Do-Something
udělal jsem něco!
nyní můžete vidět výše, že při vyvolání; spustí kód uvnitř funkce. Co kdybychom chtěli předat něco do kódu uvnitř funkce, když je spuštěna? Můžeme vytvořit jeden nebo více parametrů uvnitř bloku parametrů.
funkce Do-Something {
param ($String )
Write-Host “ udělal jsem něco — $String!“}
PS > Do-Something-String ‚thing‘
udělal jsem něco — thing!
Všimněte si, že jsem zadal parametr String přidáním pomlčky následované názvem parametru následovaným hodnotou hned po volání Do-Something. Toto jsou základy předávání parametrů funkcím.
pokročilé funkce
základní funkce fungují, ale většinu času zjistíte, že vytváříte pokročilé funkce. Pokročilé funkce jsou funkce, které zahrnují všechny funkce jako základní funkce, ale také přicházejí s některými vestavěnými funkcemi, které základní funkce nemají. Například PowerShell má koncept proudů zvaný Error, Warning, Verbose atd. Tyto proudy jsou rozhodující pro správné zobrazení výstupu uživatelům. Základní funkce těmto proudům neodmyslitelně nerozumí.
řekněme, že chceme zobrazit chybovou zprávu, pokud se něco stane uvnitř funkce. Chceme však také možnost Skrýt tuto chybovou zprávu z nějakého důvodu pouze v určitých časech. Se základní funkcí by to bylo kludgy. S pokročilou funkcí je však tato funkce zabudována přímo. Pokročilé funkce ve výchozím nastavení již mají parametry, i když je nezahrnujete jako Verbose, ErrorAction, WarningVariable a tak dále. Ty lze využít několika různými způsoby. V našem příkladu chyby řekněme, že jsem pomocí klíčového slova upravil naši funkci tak, aby byla „pokročilá“.
funkce-Něco {
param( $String )
Write-Error -Message ‚Nebezpečí, Bude Robinson!‘
}
PS> Do-Something
Do-Something: Danger, Will Robinson!
Na řádek:1 char:1
+-
+ ~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) ,
WriteErrorException
+ FullyQualifiedErrorId :
Microsoft.PowerShell.Příkaz.WriteErrorException, Do-Something
při spuštění se okamžitě zobrazí červený text, který označuje, že pochází z chybového proudu. Pojďme nyní tuto chybu umlčet.
Udělat-Něco -ErrorAction SilentlyContinue
ErrorAction parametr je jen jeden vestavěný parametr na každé pokročilejší funkce. Je tu mnohem víc funkcí PowerShell, které jsme neměli čas pokrýt. Úplný rozpis všeho, co pro vás pokročilé funkce mohou udělat, najdete v tématu nápovědy about_advanced_functions.