Forstå Funksjoner i PowerShell
i Stedet for å kopiere og lime inn den samme koden om og om igjen, oppretter Du En PowerShell-funksjon.
når du først begynner å skrive PowerShell-skript, er du ikke nødvendigvis bekymret for ting som modularitet, gjenbrukbarhet og » beste praksis.»Du får bare føttene våte. Men etter hvert som tiden går, vil du snart innse at du begynner å gjenta deg selv i kode.
Du vil legge merke til at behovet for å gjøre det samme om og om igjen blir større. Du kan bare kopiere og lime inn den samme koden, men det er ikke bærekraftig. I stedet, hvorfor ikke lage små «byggeklosser» i kode slik at de kan gjenbrukes? Det er på tide å begynne å lage PowerShell-funksjoner.
en Funksjon I PowerShell er en gruppering av kode som har en valgfri inngang og utgang. Det er en måte å samle opp en haug med kode for å utføre en eller mange forskjellige tider ved å bare peke på den i stedet for å duplisere den koden gjentatte ganger.
Grunnleggende funksjoner
Det finnes to typer funksjoner I PowerShell. Vi har en» grunnleggende » funksjon og en avansert funksjon. «Grunnleggende» funksjoner er den enkleste formen for en funksjon som kan opprettes. De har ikke noen av de fancy innebygde evner som avanserte funksjoner gjør. Den opprettes eller deklareres ved å bruke funksjonserklæringen etterfulgt av et sett med krøllebraketter.
funksjon Do-Something {}
ovennevnte er teknisk en funksjon som kan kalles Ved å påkalle Do-Something, men som du finner det gjør det ikke veldig mye. Dette er fordi vi ikke har tatt med noen kode inne for å kjøre. La oss legge til noen enkel kode inne for å sikre at den gjør noe. For å demonstrere, bruker Jeg Write-Host-kommandoen som skriver tekst til PowerShell-konsollen.
funksjon Gjør-noe {
Skriv-Host ‘ jeg gjorde noe!’
}
PS > Gjør-noe
jeg gjorde noe!
Nå kan du se over det når det påberopes; det kjører koden inne i funksjonen. Hva om vi vil sende noe inn i koden inne i funksjonen når den kjører? Vi kan opprette en eller flere parametere inne i en parameterblokk.
funksjonen Gjør-noe {
param( $String)
Skriv-Host «jeg gjorde noe – $String!»}
PS > Gjør-Noe-Streng ‘ting’
jeg gjorde noe-ting!Legg Merke til at Jeg angav Strengparameteren ved å legge til et dash etterfulgt av parameternavnet etterfulgt av verdien rett etter at Jeg ringte Do-Something. Dette er grunnleggende om å overføre parametere til funksjoner.
Avanserte funksjoner
Grunnleggende funksjoner fungerer, men mesteparten av tiden vil du finne deg selv å lage avansert funksjon. Avanserte funksjoner er funksjoner som inkluderer all funksjonalitet som grunnleggende funksjoner, men kommer også med noen innebygde funksjoner som grunnleggende funksjoner ikke gjør. For Eksempel Har PowerShell et konsept av strømmer kalt Feil, Advarsel, Verbose, etc. Disse strømmene er kritiske for riktig visning av utdata til brukere. Grunnleggende funksjoner forstår ikke iboende disse strømmene.
La oss si at vi vil vise en feilmelding hvis noe skjer inne i funksjonen. Vi vil imidlertid også ha muligheten til å skjule denne feilmeldingen av en eller annen grunn bare på bestemte tidspunkter. Med en grunnleggende funksjon ville det være kludgy å gjøre dette. Men med en avansert funksjon er denne funksjonaliteten innebygd. Avanserte funksjoner har som standard allerede parametere, selv om du ikke inkluderer dem som Verbose, ErrorAction, WarningVariable og så videre. Disse kan utnyttes på forskjellige måter. I vårt feileksempel, la oss si at jeg har endret vår funksjon til å være «avansert» ved å bruke søkeordet.
funksjonen Gjør-noe {
param ($Streng)
Skriv-Feil-Melding ‘ Fare, Vil Robinson!’
}
PS > Gjør-noe
Gjør-noe : Fare, Vil Robinson!
på linje: 1 røye: 1
+ Gjør-noe
+ ~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) ,
WriteErrorException
+ FullyQualifiedErrorId :
Microsoft.PowerShell.Kommando.WriteErrorException, Gjør-noe
når dette kjøres, vil du umiddelbart se rød tekst som indikerer at den kom fra feilstrømmen. La oss nå stille denne feilen.
Do-Something-Erroraction SilentlyContinue
ErrorAction-parameteren er bare en innebygd parameter på hver avansert funksjon. Det er så mye Mer Til PowerShell-funksjoner vi ikke fikk tid til å dekke. For en fullstendig oversikt over alt som avanserte funksjoner kan gjøre for deg, se hjelpeemnet about_advanced_functions.