Számos kilépést biztosító kulcsszavunk van PowerShellben: break, continue, return, exit, throw. Tegyük ezeket rendbe a fejlett függvények kontextusában, hogy melyik hogyan működik és mikor használhatjuk.
Nézzük ez a példaszkriptet:
function
FejlettFüggény {
param(
[Parameter(ValueFromPipeline
=
$true)]
[int]$bemenőadat,
[switch]
$kilépelejéről,
[switch]
$kiugrikelejéről,
[switch]
$kilépvégéről
)
begin
{
Write-Host
"Eleje"
if($kilépelejéről){
Write-Host
"Elejéről kilép"
}
if($kiugrikelejéről){
Write-Host
"Elejéről kiugrik"
}
Write-Host
"Eleje vége"
}
process{
Write-Host
"Közepe: $bemenőadat"
if($bemenőadat
-gt
5){
Write-Host
"Középről kilépek"
}
if($bemenőadat
-gt
8){
Write-Host
"Közepéről kiugrok"
}
Write-Host
"Közepe vége"
}
end{
Write-Host
"Vége eleje"
if($kilépvégéről){
Write-Host
"Végéről kilép"
}
Write-Host
"Vége vége"
}
}
1,2,6,10
|
FejlettFüggény
-kilépelejéről
Write-Host
"Script vége"
Egyelőre nincs benne semmi kilépő utasítás, a futtatás eredménye így:
PS
C:\> C:\Users\soost\OneDrive\PSKönyv\Kilépés.ps1
Eleje
Elejéről
kilép
Eleje
vége
Közepe:
1
Közepe
vége
Közepe:
2
Közepe
vége
Közepe:
6
Középről
kilépek
Közepe
vége
Közepe:
10
Középről
kilépek
Közepéről
kiugrok
Közepe
vége
Vége
eleje
Vége
vége
Script
vége
Elsőként próbáljuk azt elérni, hogy a szkriptben jelenleg használt -kilépelejéről kapcsoló hatására az „Eleje vége” már ne hajtódjon végre, hanem menjünk a processz blokkba a függvény közepére. Ehhez a return kulcsszót teszem be a megfelelő IF részbe (most csak a begin részt teszem ide):
begin {
Write-Host
"Eleje"
if($kilépelejéről){
Write-Host
"Elejéről kilép"
return
}
if($kiugrikelejéről){
Write-Host
"Elejéről kiugrik"
}
Write-Host
"Eleje vége"
}
Az eredmény:
Eleje
Elejéről
kilép
Közepe:
1
Közepe
vége
Közepe:
2
Közepe
vége
Közepe:
6
Középről
kilépek
Közepe
vége
Közepe:
10
Középről
kilépek
Közepéről
kiugrok
Közepe
vége
Vége
eleje
Vége
vége
Script
vége
Azaz, az elejéről most tényleg kilépett és átment a közepére a vezérlés. Nézzük, hogyan tudunk az elejéről teljesen kilépni. Elsőként használjuk az exit kulcsszót:
begin {
Write-Host
"Eleje"
if($kilépelejéről){
Write-Host
"Elejéről kilép"
return
}
if($kiugrikelejéről){
Write-Host
"Elejéről kiugrik"
exit
}
Write-Host
"Eleje vége"
}
A függvényhívás a szkripten belül most így néz ki:
1,2,6,10
|
FejlettFüggény
-kiugrikelejéről
Az eredmény:
Eleje
Elejéről
kiugrik
Ugyan tényleg kiugrott a függvényből, de a szkriptből is és a „Script vége” rész sem hajtódott végre. Ez nekem túl sok, keressünk egy enyhébb kilépést biztosító parancsot! Ez pedig a break lesz: