Articles

zrozumienie funkcji w PowerShell

zamiast kopiować i wklejać ten sam kod w kółko, Utwórz funkcję PowerShell.

rozpoczynając pisanie skryptów PowerShell niekoniecznie martwisz się o takie rzeczy jak modułowość, możliwość wielokrotnego użytku i „najlepsze praktyki”.”Po prostu mokniesz sobie stopy. Jednak w miarę upływu czasu szybko zdasz sobie sprawę, że zaczynasz powtarzać się w kodzie.

zauważysz, że potrzeba robienia tego samego w kółko staje się coraz większa. Możesz po prostu skopiować i wkleić ten sam kod, ale to nie jest trwałe. Zamiast tego, dlaczego nie utworzyć małych „bloków konstrukcyjnych” w kodzie, aby można je było ponownie wykorzystać? Czas zacząć tworzyć funkcje PowerShell.

funkcja w PowerShell to grupowanie kodu, które ma opcjonalne wejście i wyjście. Jest to sposób na zebranie kilku kodów, aby wykonać jeden lub wiele różnych razy, po prostu wskazując na niego, zamiast powielać ten kod wielokrotnie.

podstawowe funkcje

w PowerShell są dwa rodzaje funkcji. Mamy funkcję „podstawową” i funkcję zaawansowaną. „Podstawowe” funkcje są najprostszą formą funkcji, którą można utworzyć. Nie mają żadnych fantazyjnych wbudowanych funkcji, które mają zaawansowane funkcje. Jest on tworzony lub deklarowany za pomocą instrukcji function, po której następuje zestaw nawiasów klamrowych.

function Do-Something {}

powyższe jest technicznie funkcją, którą można następnie wywołać wywołując Do-Something, ale jak się przekonasz, nie robi to zbyt wiele. Dzieje się tak dlatego, że nie dodaliśmy żadnego kodu do uruchomienia. Dodajmy prosty kod do środka, aby upewnić się, że coś robi. Aby zademonstrować, użyję polecenia Write-Host, które zapisuje tekst do konsoli PowerShell.

function Do-Something {
Write-Host 'I did something!’
}

PS > zrób coś
zrobiłem coś!

teraz możesz zobaczyć powyżej, że po wywołaniu; uruchamia kod wewnątrz funkcji. Co jeśli chcielibyśmy przekazać coś do kodu wewnątrz funkcji, gdy jest uruchomiona? Możemy utworzyć jeden lub więcej parametrów wewnątrz bloku parametrów.

function Do-Something {
param( $String)
Write-Host ” I did something — $String!”}

PS > Do-Something-String 'thing’
I did something — thing!

zauważ, że podałem parametr String dodając myślnik, po którym następuje nazwa parametru, a następnie wartość zaraz po wywołaniu Do-Something. To podstawy przekazywania parametrów do funkcji.

zaawansowane funkcje

podstawowe funkcje działają, ale przez większość czasu będziesz tworzyć zaawansowane funkcje. FUNKCJE ZAAWANSOWANE to funkcje, które obejmują wszystkie funkcje jako podstawowe funkcje, ale także zawierają wbudowane funkcje, których podstawowe funkcje nie mają. Na przykład PowerShell ma koncepcję strumieni o nazwie Error, Warning, Verbose itp. Te strumienie są krytyczne dla prawidłowego wyświetlania danych wyjściowych dla użytkowników. Podstawowe funkcje nie rozumieją z natury tych strumieni.

powiedzmy, że chcemy wyświetlić komunikat o błędzie, jeśli coś dzieje się wewnątrz funkcji. Chcemy jednak również mieć możliwość ukrycia tego komunikatu o błędzie z jakiegoś powodu tylko w określonych momentach. Z podstawową funkcją byłoby to kludgy. Jednak dzięki zaawansowanej funkcji ta funkcjonalność jest wbudowana. Zaawansowane funkcje domyślnie mają już parametry, nawet jeśli ich nie uwzględniasz, takie jak Verbose, ErrorAction, WarningVariable i tak dalej. Można je wykorzystać na różne sposoby. W naszym przykładzie błędów powiedzmy, że zmodyfikowałem naszą funkcję na „zaawansowaną” za pomocą słowa kluczowego.

function Do-Something {

param( $String)

Write-Error-Message 'Danger, Will Robinson!’
}

PS> Do-Something
Do-Something: Danger, Will Robinson!
At line:1 char:1
+ Do-Something
+ ~~~~~~~~~~~~
+ CategoryInfo: NotSpecified: (:),
WriteErrorException
+ FullyQualifiedErrorId :
Microsoft.PowerShell.Komendy.WriteErrorException, Do-Something

gdy to zostanie uruchomione, natychmiast zobaczysz czerwony tekst, który wskazuje, że pochodzi ze strumienia błędów. Uciszmy ten błąd.

do-Something-ErrorAction SilentlyContinue

parametr ErrorAction jest tylko jednym wbudowanym parametrem w każdej zaawansowanej funkcji. Jest o wiele więcej funkcji PowerShella, na które nie mieliśmy czasu. Aby uzyskać pełny opis wszystkiego, co zaawansowane funkcje mogą Dla ciebie zrobić, zapoznaj się z tematem pomocy about_advanced_functions.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *