funkciók egy gyakori előfordulás PowerShell és ahhoz, hogy valóban megértsék a PowerShell nyelv, fontos, hogy tudja, hogyan működik a funkciók. Ebben a cikkben megmutatjuk, hogyan fejlődik a PowerShell funkció alapvetően a semmiből egészen az érvényesítési attribútumokat használó paraméterek birtoklásáig.
ennek bemutatásához kezdjük el egy olyan funkcióval, amely nem tud egyszerűbbé válni.
function Write-Log {
param()
}
amikor egy PowerShell munkamenet belsejében fut, ez a funkció végrehajtásra kerül, de nem fog semmit tenni, mert nincs végrehajtandó kód. A PowerShell egyszerűen végrehajtja a funkciót, majd visszatér.
ahhoz, hogy a funkció valóban tegyen valamit, hozzá kell adnunk néhány kódot. A kód a param blokk és az utolsó göndör zárójel között kerül hozzáadásra. Az alábbiakban láthatja, hogy az írás-napló funkcióm visszaadja a “tettem valamit” karakterláncot a konzolra.
function Write-Log {
param()
'I did something'
}
PS> Write-Log
I did something
funkciónkat írási Naplónak nevezzük, tehát feltételezem, hogy ez egy olyan funkció lesz, amely végül valamilyen szöveget ír egy naplófájlba. Mivel nem akarjuk ugyanazt írni egy naplófájlba minden alkalommal, meg kell adnunk valamilyen módot az üzenet megváltoztatására, amikor a funkció fut. Ehhez hozzáadunk egy paramétert. A paraméterek lehetővé teszik a felhasználó számára, hogy futásidőben különböző értékeket továbbítson a funkcióba. Ez lehetővé teszi a funkció számára, hogy dinamikus bemenetet gyűjtsön futásidőben.
egy paraméter hozzáadásához hozzáadok egy változót. Ebben az esetben a változó neve üzenet. Hozzáadom a param blokk belsejében, az alábbiak szerint. Ezután láthatja, hogy hivatkozhatok erre a paraméterre a funkció belsejében. Futtatás közben a funkció bármilyen értéket visszaad az Üzenetparaméternek.
function Write-Log {
param($Message)
$Message
}
PS> Write-Log -Message 'I did something'
I did something
nem kell csak egy paraméternél megállnia. Annyit adhatunk hozzá, amennyit csak akarunk. Az alábbiakban egy súlyossági paramétert adok hozzá, amely értéket ad a függvény futtatásakor, és láthatja, hogy ugyanazt a viselkedést mutatja.
function Write-Log {
param($Message, $Severity)
"$Message - Severity: $Severity"
}
Write-Log -Message 'I did something' -Severity 1
most, hogy tudjuk, hogyan kell kezelni a paramétereket, bejuthatunk paramétertípusokba. A paraméternek olyan típusa van, mint bármi más a PowerShellben. Fent, egy típust használt, de bármilyen elképzelhető tárgyat elfogadott. A paraméter nem volt kifejezetten gépelve. Jó gyakorlat, hogy ezt minden paraméteren elvégezzük, hogy csak az elvárt értékeket adjuk át.
egy típus meghatározásához a típust szögletes zárójelben közvetlenül a paraméter deklarálása előtt adhatjuk hozzá.
function Write-Log {
param($Message)
$Message
}
Ha a paraméterhez explicit típus van hozzárendelve, a PowerShell csak az adott típusú bemenetet vagy egy konvertálható objektumot fogadja el. Az alábbi példában a $false logikai értéket átadom az üzenet paraméternek. Láthatjuk, hogy PowerShell nem engedi. Ez azért van, mert nem tudja átalakítani a logikai típust ServiceController típusra.
azonban, ha átadunk egy ServiceController objektumot, amely a Get-Service visszatér, akkor csak jól működik.
PS> Write-Log -Message $service
Status Name DisplayName
------ ---- -----------
Stopped AdtAgent Microsoft Monitoring Agent Audit Fo...
paraméter attribútumokat is használhatunk. A paraméter attribútumok lehetővé teszik az egyes paraméterek különböző jellemzőinek meghatározását, amelyek meghatározzák, hogyan működik. Az alábbi példában a kötelező paramétert használom. Ezek az attribútumok arra kényszerítik a felhasználót, hogy adjon át egy értéket az Üzenetparaméternek, különben a funkció nem fog futni.
alapértelmezett értéket is Beállítok a súlyossági paraméteren. Ez lehetővé teszi számomra, hogy kényszerítsem a súlyosságot, hogy mindig 1 legyen, kivéve, ha futási időben felülbírálják, ha egy értéket átadnak ennek a paraméternek.
function Write-Log {
param(
$Message,
$Severity = 1
)
"$Message - Severity: $Severity"
}
végül paraméterellenőrzési attribútumokat használhatunk. A paraméterellenőrzési attribútumok nagyszerű módja annak, hogy korlátozzák, milyen értékeket adnak át egy paraméternek. Az alábbi példában a ValidateRange () validation attribútumot használom. Ezt az attribútumot az integer típusú paramétereknél használják az engedélyezett számok tartományának meghatározásához. Ebben a példában csak a súlyossági értékeket engedem 1-5-nek. Bármely más érték, amely nincs ebben a tartományban, sikertelen lesz.
function Write-Log {
param(
$Message,
$Severity
)
"$Message - Severity: $Severity"
}
Wrap Up
mostanra már alapvető megértéssel kell rendelkeznie arról, hogy a funkciók Hogyan működnek PowerShellben. Mindent lefedtünk, amit tudnod kell az induláshoz hasznos funkciók kiépítése a PowerShellben. Arra biztatom önöket, hogy kezdjék el észrevenni azokat az időket a szkriptjeikben, amikor egy funkció hasznos lenne, és kezdjék el támogatni őket. Idővel látni fogja, hogy a kód lesz tisztább, sokkal könnyebb olvasni.