parancsfájlok döntéseket hozhatnak. Hogyan? Egy feltételes logikának nevezett fogalom használatával. A PowerShell if utasítás és az if/else konstrukciók a feltételek meghatározásának közös módjai.
PowerShell szkriptek írásakor ezt egy adott feladat vagy feladatok szem előtt tartásával teheti meg. De egy műveletnek egynél több lehetséges művelete lehet egy vagy több feltétel alapján. Ez a helyzet, ahol a PowerShell If-Else konstrukció jön.,
ebben a cikkben megtudhatja, mi a PowerShell If-Else konstrukció, megérteni annak szintaxisát, hogyan működik. Azt is megtanulják a példák néhány különböző módon lehet használni PowerShell, Ha-Más hozzá feltételes logikai kezelése a forgatókönyvet.
Tartalomjegyzék
A PowerShell If-Else szintaxis megértése
a PowerShell if-else konstrukció egy vagy több feltételes kifejezést értékel. Az alábbiakban megjelenik az If utasítás szintaxisa. Ezt a stílust néha áramlásszabályozásnak nevezik.,
if (<test1>) {<statement list 1>}
amint az a fenti szintaxisból látható, minden teszt zárójelben van ()
. A tesztek különböző operátorokat, például összehasonlító operátorokat és logikai operátorokat használhatnak,
a kimutatási listák tartalmazzák a futtatásra szánt kódot, ha a teszt eredménye true-ra értékel.
ezután három lehetséges állítás létezik egy If utasításcsoportban. Ezek az IF, ELEIF és ELSE nyilatkozatok.,
- The
if
a nyilatkozat tartalmazza az első kiértékelendő tesztet, majd a zárójelbe zárt első utasításlistát{}
.A PowerShell if utasítás az egyetlen nyilatkozat, amely jelen kell lennie. - a
elseif
utasítás, ahol hozzá feltételeket. Akkor adjunk hozzá több Eleif nyilatkozatokat, ha több feltétel. A PowerShell ezeket a feltételeket egymás után értékeli. - a
else
nyilatkozat nem fogad el semmilyen feltételt., A jelen nyilatkozatban szereplő utasításlista tartalmazza a futtatandó kódot, ha az összes vizsgált előzetes feltétel hamis.
A PowerShell If-Else Logic Flow
megértése a PowerShell If-Else működésének további megértéséhez meg kell ismerkednie annak logikai áramlásával. Az alábbi ábra szemlélteti a PowerShell If-Else alapvető áramlását.,
amikor az IF utasítás fut, a PowerShell minden feltételen keresztül fut, értékelve, hogy a kód igaz vagy hamis. A viselkedés összefoglalása az alábbi:
- PowerShell értékeli az állapotot az 1. tesztben.
- ha az 1. teszt eredménye true értéket ad vissza, akkor az If utasításlistában lévő kód fut, majd a PowerShell kilép az If utasításból.,
- ha az 1. teszt eredménye hamis, a PowerShell továbbra is értékeli az állapotot (N teszt) a következő Eleif nyilatkozatban.
- ha az n teszt eredménye hamis, a PowerShell továbbra is értékeli az állapotot (N teszt) a következő Eleif nyilatkozatban, ha létezik egy másik Eleha állítás-vagy –
- ha az N teszt eredménye hamis, akkor az Else utasítás kódja fut. Ezután a PowerShell kilép az If utasításból-vagy –
- ha az N teszt eredménye true értéket ad vissza,az Eleif utasítás kódja fut. Ezután a PowerShell kilép az If utasításból.,
A PowerShell If-Else utasítás használata
a következő szakaszok számos példát mutatnak a PowerShell If-Else utasítás használatára szkriptek írásakor. A megtanult technikák útmutatást nyújthatnak az If nyilatkozat használatához, ha olyan valós helyzetet tapasztal, amely megköveteli annak használatát.
egyetlen If-Else feltétel
a legalapvetőbb az egyetlen If utasítás. Használjon egyetlen if nyilatkozatot, ha csak egy feltétel van a teszteléshez.
az alábbi példa azt vizsgálja, hogy a $num
változó értéke nagyobb-e, mint 10., Ha az eredmény igaz, akkor a képernyőn megjelenik a "$num is greater than 10"
eredmény. Ha az eredmény hamis, a PowerShell nem tesz semmit, mert csak egy feltétel van a teszteléshez.
$num = 11if ($num -gt 10) { "$num is greater than 10"}
a fenti kód beillesztése a Powershellbe megadja az alábbi eredményt.,
most, ha azt szeretnénk, hogy adjunk egy alapértelmezett “fallback” akció helyett csak hagyta PowerShell nem csinál semmit, ha a a teszt eredménye hamis, hozzáadhatja az else nyilatkozatot.
az alábbi példában az Else utasítás kódja fut, ha a $num
változó értéke nem haladja meg a 10-et.
$num = 9if ($num -gt 10){ "$num is greater than 10"}else{ "$num is NOT greater than 10"}
a módosított kód futtatása a PowerShellben megadja az alábbi kimenetet.,
a PowerShell 7.0-val kezdve az If utasítás új szintaxisát vezettek be egy ternary operátor segítségével. Single If nyilatkozatok lehet, hogy jól használja ezt az új szintaxist.
ugyanazzal a fenti példával, így néz ki a kód a háromkomponensű operátorral.,
$num = 11$num -gt 10 ? "$num is greater than 10" : "$num is NOT greater than 10"
többszörös if-else feltételek eleif
ha több feltétel van az értékeléshez, hozzá kell adnia egy vagy több eleif nyilatkozatot. Minden más utasítás tartalmazza a teszt kifejezést és a futtatandó kódot.,
az alábbi parancsfájl végrehajtásakor a CTRL+C
billentyűleütésig folyamatosan kéri a gyümölcs nevét, vagy a felhasználó beírja a “X
“betűt.
ezután az If utasítás egymás után megy keresztül minden feltételen, amíg meg nem találja a mérkőzést. Ha a bemenet nem felel meg egyik feltételnek sem, akkor az Else nyilatkozatban szereplő kód végrehajtásra kerül.
Az alábbiakban bemutatjuk, hogyan viselkedik a fenti szkript, amikor PowerShellben fut.,
szabad lemezterület állapotának jelentése
a szabad lemezterület jelentése egy olyan feladat, amely gyakori a rendszer adminisztrátorok. A rögzített lemezek helyinformációinak a Windows gépen történő jelentésének szokásos módja az alábbi kód körül forog.
Get-CimInstance -ClassName CIM_LogicalDisk | Where-Object {$_.DriveType -eq 3}
az információ, amelyet a fenti kód visszatér, valami hasonlónak tűnik a következő képernyőképen.,
mint látható, a fenti kimenet a meghajtó betűjét és a szabad hely értékeket mutatja, más tulajdonságokkal együtt. Míg a fenti kimenet rendben van, nem intuitív. Az információ bemutatásának módja nem jelzi, hogy a lemezterület kritikus vagy figyelmeztető állapotban van-e vagy normális.,
PowerShell If utasítás használata a
Kód javítására a PowerShell If-Else utasítás használatával intuitívabb kimenet érhető el feltételek hozzáadásával annak ellenőrzéséhez, hogy a szabad hely bizonyos küszöbértékek felett vagy alatt van-e. Ezek a küszöbértékek meghatározzák a szabad lemezterület állapotát.
az alábbi példa szkript a következőket hajtja végre:
- a
$Critical
változó értékével határozza meg azt a küszöbértéket, amelyre a szabad hely százaléka kritikus lesz., - a
$Warning
változó értékével adja meg azt a küszöbértéket, amelyre a szabad hely százaléka figyelmeztetésként lesz címkézve. - Szerezd meg az összes rögzített lemezinformációt a helyi gépről
- hurok az összes lemezinformáción keresztül a szabad hely meghatározásához és állapotának címkézéséhez.
- ha a szabad hely százalékos értéke magasabb, mint a
$Warning
változó értéke, akkor a lemezterület állapota a szokásos módon van címkézve., - ha a szabad hely százalékos értéke magasabb, mint a
$Critical
változó értéke, a lemezterület állapota figyelmeztetésként van címkézve. - ha a szabad hely százalékos értéke kisebb vagy egyenlő a
$Critical
változó értékével, akkor a lemezterület állapota kritikus.
- ha a szabad hely százalékos értéke magasabb, mint a
-
'Drive Letter'
,'Drive Name'
,'Total Space (GB)'
,'Free Space (GB)'
,'Free Space (%)'
és'Status'
., - adja vissza a zárójelentést
másolja át az alábbi kódot, majd mentse el a szkriptet a Get-DiskSpace.ps1
fájlnévvel. Ne felejtse el megváltoztatni a $Critical
és $Warning
változók értékeit, ha különböző küszöbértékekkel szeretne tesztelni.
a szkript mentése után tesztelje úgy, hogy a nevét PowerShellben hívja. Az alábbiakban bemutatjuk, hogyan működik ez a szkript.,
Mint látható, a kimenet állapotának minden lemez határozza meg a szabad lemezterület százalékos, ez volt az eredménye a több feltételek a PowerShell-Ha-Mást.
többszörös és beágyazott If-Else
tegyük fel, hogy van egy If-else utasítás a else
blokkban meghatározott feltétellel., Ha az If-else utasítás fut ,akkor aelse
blokk akkor kerül meghívásra, ha aif
blokk belsejében lévő kód hamis.
aelse
blokk belsejében egy másik feltételes tesztet kell végrehajtania. Ennek eredményeként szüksége van egy másik If-Else nyilatkozatra. Ezt a forgatókönyvet beágyazott If-Else-nek nevezik. A beágyazott If-Else nyilatkozatot általában akkor használják, ha a belső If-más a külső If-ben végzett művelet eredményétől függ.
többszörös és beágyazott If-Else kijelentések használata meglehetősen zavaró lehet., A lényeg az, hogy ne feledkezzünk meg az állvány elhelyezéséről, és győződjünk meg arról, hogy be van-e illesztve a kód. A kód beillesztése segít könnyen felismerni és elválasztani az If-Else nyilatkozatokat.
példa a többszörös/beágyazott If-Else utasításokra
az alábbi példaprogram azt mutatja, hogy a többszörös és beágyazott If-Else függhet egymás eredményétől. Az alábbi kód logikája a következő.
- Ha a
$SendEmail
$false
, A szkript nem tesz semmit, és kilép., - Ha a
$SendEmail
$true
, akkor a$From
és$To
változók nem lehetnek üresek vagy nullák. Ellenkező esetben a$abortFlag
értéke 1. - Ha a
$SendEmail
$true
és a$CCEnabled
$true
, akkor a$CC
div > változó nem lehet üres vagy null. Ellenkező esetben a$abortFlag
értéke 1., - Ha a
$SendEmail
$true
és a$BCCEnabled
$true
, akkor a / div > változó nem lehet üres vagy null. Ellenkező esetben a$abortFlag
értéke 1. - Ha a
$abortFlag
érték 1, akkor a szkript ezen a ponton kilép, és nem folytatódik. - Ha a
$abortFlag
érték 0, a szkript a végéig folytatódik.
másolja át az alábbi kódot, majd mentse el Send-MyMail.ps1
néven. Ne változtassa meg az értékeket még.,
Miután elmentette a fájlt, futtassa PowerShellben az alábbiak szerint. Az alábbi bemutató a szkript eredményét mutatja, amikor a változó értékek változatlanok maradnak.
ezután szerkessze a szkriptet és frissítse az összes változót megfelelően, mint ez a részlet.
a változók szerkesztése után mentse el a szkriptet, majd futtassa újra. Ugyanazt az eredményt kell mutatnia, amint az alább látható.,
most módosítsa a változókat, és próbáljon ki különböző kombinációkat, hogy tesztelje, hogyan befolyásolja a beágyazott If-Else. A módosítás és a tesztelés önmagában segítene a logika további megértésében.
összefoglaló
ebben a cikkben megismerte a feltételes logikai konstrukciót-a PowerShell If-Else konstrukciót., Az If-Else utasítás használata lehetővé teszi a szkriptek számára, hogy feltételes logikát fogalmazzanak meg, és a szkriptek műveleteit tesztelési eredmények alapján irányítsák.
Az ebben a cikkben bemutatott példákkal meg kellett volna tanulnia az If-Else utasítás használatának módjait és technikáit döntésvezérelt kód létrehozásakor. Az If-Else egyszerű lehet egyetlen feltétel használatával, és összetettebbé válik, miközben mélyebben belemerül a beágyazott If-Else kijelentésekbe.
mit gondol az If-Else nyilatkozatról? Ez valami, amit úgy gondolja, hogy egyre többet használna a cikk elolvasása után?, Milyen egyéb célokra gondolhat arra, hogy hol alkalmazhatja az itt megszerzett tudást?
további olvasás
- körülbelül Ha
- vissza az alapokhoz: a PowerShell foreach hurok