Articles

Understanding Functions in PowerShell

sen sijaan, että kopioisit ja liittäisit saman koodin uudelleen ja uudelleen, luo PowerShell-funktio.

Kun aloitat PowerShell-skriptien kirjoittamisen, et ole välttämättä huolissasi modulaarisuudesta, uudelleenkäytettävyydestä ja ”parhaista käytännöistä.”Alat vain kastella jalkojasi. Ajan kuluessa huomaat kuitenkin pian, että alat toistaa itseäsi koodilla.

huomaa, että tarve tehdä sama uudestaan ja uudestaan kasvaa koko ajan. Samaa koodia voisi kopioida ja liittää, mutta se ei ole kestävää. Miksi ei sen sijaan luotaisi koodiin pieniä ”rakennuspalikoita”, jotta niitä voitaisiin käyttää uudelleen? On aika aloittaa PowerShell-toimintojen luominen.

Powershellissa oleva funktio on koodin ryhmittely, jossa on valinnainen Tulo ja Lähtö. Se on tapa kerätä kasan koodia suorittaa yksi tai monta eri kertaa vain osoittamalla sitä sen sijaan, että monistaa, että koodi toistuvasti.

perustoimintoja

Powershellissa on kahdenlaisia funktioita. Meillä on ”perus” toiminto ja kehittynyt toiminto. ”Basic” – funktiot ovat yksinkertaisin muoto funktiosta, joka voidaan luoda. Heillä ei ole mitään hienoja sisäänrakennettuja ominaisuuksia, joita kehittyneillä toiminnoilla on. Se luodaan tai julistetaan käyttämällä funktiolauseketta, jota seuraa joukko kiharaisia henkseleitä.

funktio Do-Something {}

edellä mainittu on teknisesti funktio, jota voidaan sitten kutsua kutsumalla Do-Something, mutta kuten huomaat, se ei tee kovin paljon. Tämä johtuu siitä, että emme ole sisällyttäneet mitään koodia sisälle ajettavaksi. Lisätään yksinkertainen koodi sisälle, jotta se tekee jotain. Osoittaakseni, käytän Write-Host-komentoa, joka kirjoittaa tekstiä PowerShell-konsoliin.

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

PS > Do-something
I did something!

nyt voit nähdä edellä, että kun kutsutaan; se ajaa koodin sisällä funktio. Mitä jos haluaisimme syöttää jotain funktion sisällä olevaan koodiin, kun se on käynnissä? Voimme luoda yhden tai useamman parametrin parametrilohkon sisään.

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

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

huomaa, että määritin Merkkijonoparametrin lisäämällä viiva, jota seuraa parametrin nimi ja arvo heti sen jälkeen, kun kutsuin Do-Somethingia. Tämä on perusasioita parametrien siirtämisestä funktioille.

edistyneet funktiot

perustoiminnot toimivat, mutta useimmiten huomaat luovasi kehittynyttä funktiota. Edistyneet toiminnot ovat toimintoja, jotka sisältävät kaikki toiminnot perustoimintoina, mutta niissä on myös joitain sisäänrakennettuja ominaisuuksia, joita perustoiminnoilla ei ole. Esimerkiksi Powershellissa on virtojen käsite nimeltä Error, Warning, Verbose jne. Nämä purot ovat kriittisiä näyttäessään tuotoksen oikein käyttäjille. Perustoiminnot eivät luonnostaan ymmärrä näitä virtoja.

sanotaan, että haluamme näyttää virheilmoituksen, jos funktion sisällä tapahtuu jotain. Haluamme kuitenkin myös mahdollisuuden piilottaa tämän virheilmoituksen jostain syystä vain tiettyinä aikoina. Perustoiminnolla se olisi kludgy tehdä tämä. Kuitenkin, jossa kehittynyt toiminto, että toiminnallisuus on rakennettu oikein. Edistyneillä toiminnoilla on oletusarvoisesti jo parametrit, vaikka niitä ei sisällytettäisi, kuten Verbose, ErrorAction, WarningVariable ja niin edelleen. Näitä voidaan hyödyntää eri tavoin. Meidän virhe esimerkki, Sanotaan olen muokannut funktio on ”kehittynyt” käyttämällä avainsanaa.

function Do-Something {

param ($String )

Write-Error-Message ” Danger, Will Robinson!”
}

PS> Do-something
Do-Something : Danger, Will Robinson!
viivalla: 1 char: 1
+ Do-Something
+ ~~~~~~~~~~~~
+ CategoryInfo: NotSpecified: (:),
Writeerrorrexception
+ FullyQualifiedErrorId:
Microsoft.PowerShell.Komento.Writeerrorrexception, Do-Something

kun tämä suoritetaan, näet heti punaista tekstiä, joka osoittaa sen tulleen virhevirrasta. Vaiennetaan tämä virhe.

Do-Something-ErrorAction SilentlyContinue

ErrorAction-parametri on vain yksi sisäänrakennettu parametri jokaisella edistyneellä funktiolla. Powershellissa on niin paljon muutakin, mitä emme ehtineet käsitellä. Saat täyden erittelyn kaikesta, mitä kehittyneet toiminnot voivat tehdä sinulle, katso about_advanced_functions ohje aihe.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *