forstå funktioner i Strømshell
i stedet for at kopiere og indsætte den samme kode igen og igen, skal du oprette en Strømshell-funktion.
Når du først starter med at skrive Strømshell-scripts, er du ikke nødvendigvis bekymret for ting som modularitet, genanvendelighed og “bedste praksis.”Du får bare dine fødder våde. Men som tiden går, vil du snart indse, at du begynder at gentage dig selv i kode.
du vil bemærke, at behovet for at gøre det samme igen og igen bliver større. Du kan bare kopiere og indsætte den samme kode, men det er ikke bæredygtigt. I stedet, hvorfor ikke oprette små” byggesten ” i kode, så de kan genbruges? Det er på tide at begynde at oprette Strømshell funktioner.
en funktion i Strømshell er en gruppering af kode, der har en valgfri input og output. Det er en måde at samle en masse kode på for at udføre en eller mange forskellige tidspunkter ved blot at pege på den i stedet for at duplikere den kode gentagne gange.
grundlæggende funktioner
Der er to slags funktioner i Kraftshell. Vi har en” grundlæggende ” funktion og en avanceret funktion. “Grundlæggende” funktioner er den enkleste form for en funktion, der kan oprettes. De har ikke nogen af de smarte indbyggede funktioner, som avancerede funktioner gør. Det oprettes eller erklæres ved hjælp af funktionserklæringen efterfulgt af et sæt krøllede seler.
funktion gør-noget {}
ovenstående er teknisk en funktion, der derefter kan kaldes ved at påberåbe sig gør-noget, men som du finder det ikke gør meget. Dette skyldes, at vi ikke har inkluderet nogen kode inde for at køre. Lad os tilføje nogle enkle kode inde for at sikre, at det gør noget. For at demonstrere bruger jeg kommandoen skriv-vært, der skriver tekst til Kraftshellkonsollen.
funktion gør-noget {
skriv-vært ‘ jeg gjorde noget!’
}
PS > gør-noget
Jeg gjorde noget!
nu Kan du se ovenfor, at når påberåbes; det kører koden inde i funktionen. Hvad hvis vi gerne vil sende noget ind i koden inde i funktionen, når den kører? Vi kan oprette en eller flere parametre inde i en parameterblok.
funktion gør-noget {
param ($String)
skriv-vært “jeg gjorde noget – $String!”}
PS > gør-noget-String ‘ting’
Jeg gjorde noget-ting!
Bemærk, at jeg angav Strengparameteren ved at tilføje et bindestreg efterfulgt af parameternavnet efterfulgt af værdien lige efter jeg kaldte Do-Something. Dette er det grundlæggende ved at overføre parametre til funktioner.
avancerede funktioner
grundlæggende funktioner fungerer, men det meste af tiden finder du dig selv at oprette avanceret funktion. Avancerede funktioner er funktioner, der omfatter alle funktioner som grundlæggende funktioner, men også kommer med nogle indbyggede funktioner, som grundlæggende funktioner ikke gør. For eksempel har Strømshell et koncept af strømme kaldet fejl, advarsel, Verbose osv. Disse strømme er kritiske for korrekt visning af output til brugerne. Grundlæggende funktioner forstår ikke iboende disse strømme.
lad os sige, at vi vil vise en fejlmeddelelse, hvis der sker noget inde i funktionen. Vi ønsker dog også muligheden for at skjule denne fejlmeddelelse af en eller anden grund kun på bestemte tidspunkter. Med en grundlæggende funktion ville det være kludgy at gøre dette. Men med en avanceret funktion er denne funktionalitet indbygget lige ind. Avancerede funktioner har som standard allerede parametre, selvom du ikke inkluderer dem som Verbose, Fejlhandling, Advarselsvariabel og så videre. Disse kan udnyttes på forskellige måder. I vores fejleksempel, lad os sige, at jeg har ændret vores funktion til at være “avanceret” ved hjælp af nøgleordet.
funktion gør-noget {
param( $String)
skriv-fejl-besked ‘fare, vil Robinson!’
}
PS > gør-noget
Gør-noget : fare, vil Robinson!
på linje: 1 char: 1
+ Gør-noget
+ ~~~~~~~~~~~~
+ CategoryInfo: NotSpecified: (:),
Skriveerrorekception
+ Fuldkvalifikationerrorid:
Microsoft.Kraftskal.Kommandoer.Når dette køres, vil du straks se rød tekst, der angiver, at den kom fra fejlstrømmen. Lad os nu tavse denne fejl.
Do-Something-ErrorAction SilentlyContinue
ErrorAction-parameteren er kun en indbygget parameter på hver avanceret funktion. Der er så meget mere at Strømshell funktioner, vi ikke fik tid til at dække. For en fuldstændig oversigt over alt, hvad avancerede funktioner kan gøre for dig, henvises til hjælpeemnet about_advanced_functions.