Scripts kan træffe beslutninger. Hvordan? Ved at bruge et koncept kaldet betinget logik. Po .ershell if-sætningen og if/else-konstruktionerne er de almindelige måder at definere betingelser på.
Når du skriver Po .ershell-scripts, gør du det med en bestemt opgave eller opgaver i tankerne. Men en operation kan have mere end en mulig handling baseret på en eller flere forhold. Denne situation er hvor Po .ershell If-Else konstruktionen kommer ind.,
i denne artikel lærer du, hvad Po .ershell If-Else-konstruktionen er, forstår dens syntaks og hvordan den fungerer. Du vil også lære af eksemplerne nogle af de forskellige måder, du kan bruge Po .ershell If-Else til at tilføje betinget logisk håndtering i dine scripts.
Indholdsfortegnelse
Forstå PowerShell If-Else-Syntaks
PowerShell if-else-konstruktionen evaluerer en eller flere betingede udtryk. Nedenfor kan du se If-sætningssynta .en. Denne stil kaldes undertiden Flo.control.,
if (<test1>) {<statement list 1>}
som du kan se fra syntaksen ovenfor, er hver test lukket i en parentes ()
. Test kan gøre brug af forskellige operatører, såsom sammenligningsoperatører og logiske operatører,
sætningslisterne indeholder den kode, der er beregnet til at køre, hvis resultatet af testen evalueres til true.
derefter er der tre mulige udsagn i en If-sætningsgruppe. Disse er IF, ELSEIF, og andre udsagn.,
-
if
– sætningen indeholder den første test, der skal evalueres, efterfulgt af den første sætningsliste, der er lukket inde i de krøllede parenteser{}
.Po .ershell if-erklæringen er den eneste erklæring, der kræves for at være til stede. -
elseif
– erklæringen er, hvor du tilføjer betingelser. Du kan tilføje flere ElseIf udsagn, når du flere betingelser. Po .ershell vil evaluere hver af disse betingelser sekventielt. -
else
erklæring accepterer ikke nogen betingelse., Sætningslisten i denne erklæring indeholder koden, der skal køres, hvis alle de tidligere testede betingelser er falske.
Forstå PowerShell If-Else Logik Flow
for yderligere At forstå, hvordan PowerShell Hvis-Andet virker, er du nødt til at gøre dig bekendt med dens logik flow. Diagrammet nedenfor illustrerer den grundlæggende strøm af Po .ershell If-Else.,
Når hvis-sætning kører, PowerShell kører gennem hver tilstand vurdere, om koden returnerer true eller false. Et resum.af adfærden er nedenfor:
- po .ershell evaluerer tilstanden i Test 1.
- hvis resultatet af Test 1 returnerer true, vil koden inde i If-sætningslisten køre, og Po .ershell forlader If-sætningen.,
- hvis resultatet af Test 1 returnerer FALSK, fortsætter Po .ershell med at evaluere tilstanden (Test n) i den næste ElseIf-erklæring.
- Hvis resultatet af Testen n returnerer false, PowerShell fortsætter med at evaluere den betingelse Test n) i de næste ElseIf statement, hvis en anden ElseIf statement eksisterer -ELLER-
- Hvis resultatet af Testen n returnerer false, er koden i den Anden sætning kører. Derefter forlader Po .ershell If-sætningen-eller –
- hvis resultatet af Test n returnerer true, kører koden i ElseIf-sætningen. Derefter forlader Po .ershell If-sætningen.,
ved Hjælp af PowerShell If-Else-Sætning
i De næste afsnit er flere eksempler på, hvordan at bruge PowerShell If-Else-sætning, når du skriver scripts. De teknikker, du vil lære, kan guide dig i at bruge If-erklæringen, hvis du støder på en situation i det virkelige liv, der kræver brug.
Single If-Else betingelse
startende med den mest grundlæggende er single If-sætningen. Du skal bruge en enkelt if-erklæring, når der kun er en betingelse for at teste.
nedenstående eksempel tester, om værdien af variablen $num
er større end 10., Hvis resultatet er sandt, vises resultatet, der siger "$num is greater than 10"
på skærmen. Hvis resultatet er falsk, gør Po .ershell intet, fordi der kun er en betingelse for at teste.
$num = 11if ($num -gt 10) { "$num is greater than 10"}
Hvis du indsætter koden ovenfor i Po .ershell, får du resultatet vist nedenfor.,
Nu, hvis du ønsker at tilføje en standard “fallback” handling i stedet for bare at lade PowerShell gøre noget, når resultatet af testen er falsk, kan du tilføje Else-sætning.
i eksemplet nedenfor kører koden i Else-sætningen, hvis værdien af variablen $num
ikke er større end 10.
$num = 9if ($num -gt 10){ "$num is greater than 10"}else{ "$num is NOT greater than 10"}
at køre den ændrede kode i Po .ershell giver dig output vist nedenfor.,
Start med PowerShell 7.0, en ny syntaksen for If-sætningen er blevet indført ved hjælp af en ternær operatør. Enkelt hvis udsagn kan gøre god brug af denne nye syntaks.
brug af det samme eksempel ovenfor, Sådan ser koden ud med den ternære operatør.,
$num = 11$num -gt 10 ? "$num is greater than 10" : "$num is NOT greater than 10"
Flere If-Else Betingelser med ElseIf
Når der er flere betingelser for at vurdere, du er nødt til at tilføje en eller flere ElseIf udsagn. Hver ElseIf-erklæring indeholder testudtrykket og sin egen kode, der skal køres.,
scriptet nedenfor, når det udføres, fortsætter med at spørge om et frugtnavn, indtilCTRL+C
tastetryk er udstedt, eller brugeren indtaster bogstavet “X
“.
derefter går If-sætningen gennem hver betingelse i rækkefølge, indtil den finder en kamp. Hvis input ikke matchede nogen af betingelserne, ville koden inde i Else-erklæringen blive udført.
nedenfor er demonstrationen af, hvordan scriptet ovenfor opfører sig, når du kører i Po .ershell.,
Rapportering Gratis Diskplads Status
Gratis diskplads rapportering er en opgave, som er fælles for system administratorer. Den sædvanlige måde at rapportere pladsinformationen på faste diske på en .indo .s-maskine drejer sig om koden nedenfor.
Get-CimInstance -ClassName CIM_LogicalDisk | Where-Object {$_.DriveType -eq 3}
de oplysninger, som koden ovenfor vender tilbage, ville se ud som den, der vises i dette næste skærmbillede.,
Som du kan se, output ovenfor viser drevets bogstav og fri plads værdier, sammen med andre ejendomme. Mens output ovenfor er fint, er det ikke intuitivt. Den måde, hvorpå oplysningerne præsenteres, angiver ikke, om diskpladsen er i en kritisk tilstand eller advarselstilstand eller normal.,
ved Hjælp af en PowerShell If-Sætning til at Forbedre Kode
ved Hjælp af PowerShell If-Else-sætning, at en mere intuitiv output kan opnås ved at tilføje betingelserne for at kontrollere, om den ledige plads er over eller under visse grænser. Og disse tærskler vil definere status for ledig diskplads.
eksempelskriptet nedenfor udfører følgende:
- brug værdien af variablen
$Critical
, Definer den tærskel, som procentdelen af ledig plads vil blive mærket som kritisk til., - ved hjælp af værdien af variablen
$Warning
skal du definere den tærskel, som procentdelen af ledig plads vil blive mærket som advarsel til. - få alle faste diskoplysninger fra den lokale maskine
- gennemløb alle diskoplysninger for at bestemme ledig plads og tag dens status.
- hvis den ledige pladsprocent er højere end værdien af variablen
$Warning
, mærkes diskpladsstatus som normalt., - hvis den ledige pladsprocent er højere end værdien af variablen
$Critical
, mærkes diskpladsstatus som advarsel. - hvis den ledige pladsprocent er mindre end eller lig med værdien af variablen
$Critical
, mærkes diskpladsstatus som kritisk.
- hvis den ledige pladsprocent er højere end værdien af variablen
- Opret objekt egenskaber
'Drive Letter'
'Drive Name'
'Total Space (GB)'
'Free Space (GB)'
'Free Space (%)'
og'Status'
., - returner den endelige rapport
Kopier koden nedenfor, og gem scriptet med filnavnetGet-DiskSpace.ps1
. Glem ikke at ændre værdierne for variablerne $Critical
og $Warning
, hvis du vil teste med forskellige tærskler.
når scriptet er gemt, skal du teste det ved at kalde dets navn i Po .ershell. Nedenfor er eksempeldemonstrationen af, hvordan dette script fungerer.,
Som du kan se fra den udgang, status for hver disk er bestemt af den fri diskplads procentdel, som var resultatet af brug af flere betingelser med PowerShell If-Else.
flere og indlejrede If-Else
lad os sige, at du har en if-else-erklæring med en betingelse defineret i else
– blokken., Når if-else-sætningen kører, aktivereselse
blokken, hvis koden inde iif
blokken returnerer FALSK.
inde i else
– blokken skal du udføre en anden betinget test. Som et resultat har du brug for en anden If-Else-erklæring. Dette scenario kaldes en indlejret If-Else. Den indlejrede If-Else-erklæring bruges ofte, hvis det indre If-Else afhænger af resultatet af operationen i det ydre If-Else.brug af flere og indlejrede If-Else-udsagn kan være ret forvirrende., Det centrale punkt er at huske stilladsplaceringen og sørge for, at du indrykker din kode. Indrykning af din kode hjælper dig med let at genkende og adskille dine If-Else-udsagn.
eksempel på flere/indlejrede If-Else-udsagn
eksempelskriptet nedenfor viser, hvordan flere og indlejrede If-Else kan være afhængige af resultatet af hinanden. Logikken i koden nedenfor er som følger.
- Hvis
$SendEmail
er$false
, vil scriptet ikke gøre noget, og afslut., - Hvis
$SendEmail
er$true
, så$From
og$To
variabler må ikke være tom eller null. Ellers indstilles$abortFlag
til 1. - Hvis
$SendEmail
er$true
og$CCEnabled
er$true
, så$CC
variabel skal ikke være tom eller null. Ellers indstilles$abortFlag
til 1., - Hvis
$SendEmail
er$true
og$BCCEnabled
er$true
, så$BCC
variabel skal ikke være tom eller null. Ellers indstilles$abortFlag
til 1. - hvis
$abortFlag
værdien er 1, afsluttes scriptet på dette tidspunkt og fortsætter ikke. - hvis
$abortFlag
værdien er 0, fortsætter scriptet indtil slutningen.
Kopier koden nedenfor og gem den somSend-MyMail.ps1
. Du må ikke ændre nogen værdier endnu.,
Når du har gemt filen, skal du køre den i Po .ershell som vist nedenfor. Demonstrationen nedenfor viser resultatet af scriptet, når de variable værdier går uændret.
Næste, kan du redigere scriptet og opdatere alle de variabler, som korrekt som dette uddrag nedenfor.
efter redigering af variablerne skal du gemme scriptet og køre det igen. Det skal vise dig det samme resultat, som det ses nedenfor.,
Nu skal du ændre de variable og prøve forskellige kombinationer for at teste, hvordan den indlejrede If-Else-vil blive berørt. Ændring og test på egen hånd ville hjælpe dig med at forstå logikken yderligere.
resum.
i denne artikel lærte du om den betingede logikkonstruktion – Po .ershell If-Else-konstruktionen., Brug af If-Else-sætningen giver scripters mulighed for at formulere betinget logik og dirigere deres scripts handlinger baseret på testresultater.
med eksemplerne vist i denne artikel skulle du have lært måder og teknikker til, hvordan du bruger If-Else-sætningen, når du opretter en beslutningsdrevet kode. Hvis-ellers kan være enkel ved hjælp af en enkelt tilstand og bliver mere kompleks, mens du graver dybere ned i de indlejrede If-Else-udsagn.
Hvad synes du om If-Else-erklæringen? Er det noget, du tror, du ville bruge mere og mere efter at have læst denne artikel?, Hvilke andre formål kan du tænke på, hvor du kan anvende den viden, du har erhvervet her?
Yderligere Læsning
- Hvis
- Tilbage til Basics: PowerShell foreach-Løkken