funktiot ovat yleisiä Powershellissa ja jotta todella ymmärtäisit PowerShell-kielen, on tärkeää, että tiedät miten funktiot toimivat. Tässä artikkelissa, aiomme näyttää, miten PowerShell-toiminto kehittyy pohjimmiltaan mitään aina ottaa parametrit käyttäen validointi määritteitä.
tämän osoittamiseksi aloitetaan ensin funktiolla, joka ei voi muuttua yhtään yksinkertaisemmaksi.
function Write-Log {
param()
}
kun ajetaan PowerShell-istunnon sisällä, tämä funktio suorittaa, mutta ei tee mitään, koska suoritettavaa koodia ei ole. PowerShell yksinkertaisesti suorittaa toiminnon itse ja palauttaa.
jotta funktio voisi todella tehdä jotain, meidän on lisättävä siihen jokin koodi. Koodi lisätään param-lohkon ja viimeisen kiharatuen väliin. Näet alla, että teen Kirjoitusloki-funktioni palauttamalla merkkijonon” tein jotain ” konsolille.
function Write-Log {
param()
'I did something'
}
PS> Write-Log
I did something
meidän funktiota kutsutaan Kirjoituslokiksi, joten oletan, että tämä on funktio, joka lopulta kirjoittaa jonkinlaisen tekstin lokitiedostoon. Koska emme halua kirjoittaa samaa asiaa lokitiedostoon joka kerta, Meidän on tarjottava jokin tapa muuttaa viestiä, kun toiminto toimii. Voit tehdä sen, lisäämme parametrin. Parametrien avulla käyttäjä voi syöttää erilaisia arvoja funktiolle ajon aikana. Tämä mahdollistaa dynaamisen tulon keräämisen ajon aikana.
lisätäkseni parametrin, lisään muuttujan. Tällöin muuttujaa kutsutaan viestiksi. Lisään sen sisällä param lohko kuten alla. Voit sitten nähdä, että voin viitata että parametri sisällä funktio itse. Suoritettaessa funktio palauttaa sanomaparametrille antamani arvon.
function Write-Log {
param($Message)
$Message
}
PS> Write-Log -Message 'I did something'
I did something
ei tarvitse pysähtyä vain yhteen parametriin. Voimme lisätä niin monta kuin haluamme. Alla, olen lisäämällä vakavuus parametri, joka tarjoaa arvon, kun toiminto suoritetaan ja näet, että se osoittaa samaa käyttäytymistä.
function Write-Log {
param($Message, $Severity)
"$Message - Severity: $Severity"
}
Write-Log -Message 'I did something' -Severity 1
nyt kun osataan käsitellä parametreja, päästään parametrityyppeihin. Parametrilla on tyyppi aivan kuten millä tahansa muullakin Powershellissa. Edellä se käytti tyyppiä, mutta se hyväksyi minkä tahansa kuviteltavissa olevan esineen. Parametria ei ole kirjoitettu. On hyvä käytäntö tehdä tämä kaikilla parametreilla, jotta vain odotetut arvot läpäistäisiin.
tyypin määrittelemiseksi voidaan lisätä tyyppi hakasulkeisiin juuri ennen parametrin julistamista.
function Write-Log {
param($Message)
$Message
}
kun parametrille on annettu eksplisiittinen tyyppi, PowerShell hyväksyy vain kyseisen tyypin syötteen tai objektin, jonka se voi muuntaa. Tässä esimerkissä alla, olen kulkee boolean arvo $false viestin parametri. Näet, että PowerShell ei salli sitä. Tämä johtuu siitä, että se ei voi muuntaa boolean tyyppi ServiceController tyyppi.
kuitenkin, jos ohitamme ServiceController-objektin, joka saa-palvelu palaa, se toimii ihan hyvin.
PS> Write-Log -Message $service
Status Name DisplayName
------ ---- -----------
Stopped AdtAgent Microsoft Monitoring Agent Audit Fo...
voidaan käyttää myös parametriominaisuuksia. Parametrin attribuuttien avulla voimme määritellä kullekin parametrille erilaisia ominaisuuksia, jotka määrittävät, miten se toimii. Alla olevassa esimerkissä käytän pakollista parametria. Nämä attribuutit pakottavat käyttäjän antamaan arvon Sanomaparametrille, muuten toimintoa ei suoriteta.
asetan myös oletusarvon vakavuuden parametrille. Näin voin pakottaa vakavuuden aina 1: een, ellei sitä ohiteta ajon aikana siirtämällä arvoa tälle parametrille.
function Write-Log {
param(
$Message,
$Severity = 1
)
"$Message - Severity: $Severity"
}
lopuksi voidaan käyttää parametrien validointiominaisuuksia. Parametrien validointi attribuutit ovat hyvä tapa rajoittaa, mitä arvoja parametrille siirretään. Alla olevassa esimerkissä käytän ValidateRange () validation attribuuttia. Tätä attribuuttia käytetään tyypin kokonaisluku parametreissä sallittujen lukujen alueen määrittelyyn. Tässä esimerkissä sallin vain vakavuuden arvot 1-5. Kaikki muut arvot, jotka eivät ole sillä alueella, epäonnistuvat.
function Write-Log {
param(
$Message,
$Severity
)
"$Message - Severity: $Severity"
}
Wrap up
nyt sinulla pitäisi olla perustiedot siitä, miten toiminnot toimivat Powershellissa. Olemme käsitelleet kaiken, mitä sinun tarvitsee tietää aloittaaksesi hyödyllisten toimintojen rakentamisen Powershellissa. Kehotan teitä alkaa huomaamatta aikoja teidän skriptejä, joissa toiminto olisi hyödyllinen ja alkaa ostaa niitä. Näet ajan myötä, että koodi tulee puhtaampi ja paljon helpompi lukea.