scripturile pot lua decizii. Cum? Folosind un concept numit logică condiționată. Instrucțiunea PowerShell if și construcțiile if / else sunt modalitățile comune de a defini condițiile.
când scrieți scripturi PowerShell, faceți acest lucru având în vedere o anumită sarcină sau sarcini. Dar, o operațiune poate avea mai mult de o acțiune posibilă bazată pe una sau mai multe condiții. Această situație este în cazul în care PowerShell If-Else construct vine.,în acest articol, veți afla ce este construcția PowerShell If-Else, înțelegeți sintaxa și cum funcționează. Veți învăța, de asemenea, din exemple câteva dintre diferitele moduri în care puteți utiliza PowerShell If-Else pentru a adăuga manipularea logică condiționată în scripturile dvs.
cuprins
înțelegerea sintaxei PowerShell If-Else
construcția PowerShell if-else evaluează una sau mai multe expresii condiționale. Mai jos veți vedea sintaxa declarației If. Acest stil este uneori numit control al fluxului.,
if (<test1>) {<statement list 1>}
după Cum puteți vedea din sintaxa de mai sus, fiecare test este închis într-o paranteză ()
. Testele pot folosi diferiți operatori, cum ar fi operatorii de comparație și operatorii logici,
listele de instrucțiuni conțin codul destinat rulării dacă rezultatul testului se evaluează la true.
apoi, există trei declarații posibile într-un grup de declarații If. Acestea sunt declarațiile IF, ELSEIF și ELSE.,
-
if
declarație conține prima încercare de a evalua, urmat de prima declarație listă închisă în interiorul acolade{}
.Declarația PowerShell if este singura declarație necesară pentru a fi prezentă. - declarația
elseif
este locul unde adăugați condiții. Puteți adăuga mai multe declarații ElseIf atunci când mai multe condiții. PowerShell va evalua fiecare dintre aceste condiții secvențial. - declarația
else
nu acceptă nicio condiție., Lista de instrucțiuni din această declarație conține codul de rulat dacă toate condițiile anterioare testate sunt false.
înțelegerea fluxului logic PowerShell If-Else
pentru a înțelege în continuare cum funcționează PowerShell If-Else, trebuie să vă familiarizați cu fluxul logic. Diagrama de mai jos ilustrează fluxul de bază al PowerShell If-Else.,
atunci Când declarația dacă se execută, PowerShell trece prin fiecare condiție de evaluare în cazul în care codul întoarce true sau false. Un rezumat al comportamentului este mai jos:
- PowerShell evaluează starea în testul 1.
- dacă rezultatul testului 1 returnează true, codul din lista de instrucțiuni If va rula, apoi PowerShell iese din instrucțiunea If.,
- dacă rezultatul testului 1 returnează false, PowerShell continuă să evalueze starea (testul n) în următoarea declarație ElseIf.
- Dacă rezultatul Testului n returnează false, PowerShell continuă să evalueze starea (Test n), în următoarele ElseIf declarație, dacă un alt ElseIf declarație există -SAU-
- Dacă rezultatul Testului n returnează false, cod în declarația Altceva ruleaza. Apoi, PowerShell va ieși din instrucțiunea If-sau –
- dacă rezultatul testului n returnează true, codul din Instrucțiunea ElseIf rulează. Apoi, PowerShell va ieși din Declarația If.,
folosind instrucțiunea PowerShell If-Else
următoarele secțiuni sunt câteva exemple de utilizare a declarației PowerShell If-Else atunci când scrieți scripturi. Tehnicile pe care le veți învăța vă pot ghida în utilizarea declarației If ar trebui să întâlniți o situație din viața reală care necesită utilizarea acesteia.
condiția unică If-Else
începând cu cea mai de bază este declarația unică If. Ar trebui să utilizați o singură declarație if atunci când există o singură condiție de testat.
exemplul de mai jos testează dacă valoarea variabilei $num
este mai mare de 10., Dacă rezultatul este adevărat, atunci rezultatul care spune "$num is greater than 10"
va fi afișat pe ecran. Dacă rezultatul este fals, PowerShell nu face nimic, deoarece există o singură condiție de testat.
$num = 11if ($num -gt 10) { "$num is greater than 10"}
lipirea codului de mai sus în PowerShell vă va oferi rezultatul prezentat mai jos.,
Acum, dacă doriți să adăugați un default „de rezervă” de acțiune, mai degrabă decât să lași PowerShell face nimic atunci când rezultatul testului este fals, puteți adăuga declarația Altceva.
în exemplul de mai jos, codul din Instrucțiunea Else va rula dacă valoarea variabilei $num
nu este mai mare de 10.
$num = 9if ($num -gt 10){ "$num is greater than 10"}else{ "$num is NOT greater than 10"}
rularea codului modificat în PowerShell vă oferă ieșirea prezentată mai jos.,
Incepand cu PowerShell 7.0, o nouă sintaxă pentru Cazul în care declarația a fost introdus folosind un operator ternar. Single If declarații pot face o bună utilizare a acestei noi sintaxă.folosind același exemplu de mai sus, așa ar arăta codul cu operatorul ternar.,
$num = 11$num -gt 10 ? "$num is greater than 10" : "$num is NOT greater than 10"
mai Multe if-Else Condiții cu ElseIf
atunci Când există mai multe condiții pentru a evalua, aveți nevoie pentru a adăuga unul sau mai multe ElseIf declarații. Fiecare declarație ElseIf conține expresia de testare și propriul cod pentru a rula.,
script-ul de mai jos, atunci când sunt executate, se va ține pe a determinat pentru un nume de fructe până la CTRL+C
taste este emis, sau utilizatorul introduce litera „X
„.
apoi, instrucțiunea If va parcurge fiecare condiție în ordine până când găsește o potrivire. Dacă intrarea nu corespunde niciuneia dintre condiții, codul din declarația Else ar fi executat.
mai jos este demonstrația modului în care se comportă scriptul de mai sus atunci când rulează în PowerShell.,
de Raportare Spațiu Liber pe Disc Statutul
spațiu Liber pe disc raportare este o sarcină care este comun pentru sistemul de administratori. Modul obișnuit de raportare a informațiilor spațiale ale discurilor fixe pe o mașină Windows se învârte în jurul codului de mai jos.
Get-CimInstance -ClassName CIM_LogicalDisk | Where-Object {$_.DriveType -eq 3}
informația că codul de mai sus va returna ar arăta ca cel prezentat în următoarea captură de ecran.,
după Cum puteți vedea, rezultatul de mai sus arată o literă de unitate și spațiul liber de valori, împreună cu alte proprietăți. În timp ce ieșirea de mai sus este bine, nu este intuitiv. Modul în care sunt prezentate informațiile nu indică dacă spațiul pe disc este într-o stare critică sau de avertizare sau normal.,
folosind o declarație PowerShell If pentru a îmbunătăți codul
folosind instrucțiunea PowerShell If-Else, o ieșire mai intuitivă poate fi obținută prin adăugarea de condiții pentru a verifica dacă spațiul liber este peste sau sub anumite praguri. Și aceste praguri vor defini starea spațiului liber pe disc.
scriptul exemplu de mai jos efectuează următoarele:
- folosind valoarea variabilei
$Critical
, definiți pragul la care procentul de spațiu liber va fi etichetat ca fiind critic., - folosind valoarea variabilei
$Warning
, definiți pragul la care procentul de spațiu liber va fi etichetat ca avertisment. - obțineți toate informațiile despre discul fix de la mașina locală
- bucla prin toate informațiile despre disc pentru a determina spațiul liber și a eticheta starea acestuia.
- dacă procentul de spațiu liber este mai mare decât valoarea variabilei
$Warning
, starea spațiului pe disc este etichetată ca normală., - dacă procentul de spațiu liber este mai mare decât valoarea variabilei
$Critical
, starea spațiului pe disc este etichetată ca avertisment. - dacă procentul de spațiu liber este mai mic sau egal cu valoarea variabilei
$Critical
, starea spațiului pe disc este etichetată ca fiind critică.
- dacă procentul de spațiu liber este mai mare decât valoarea variabilei
- Compune proprietățile obiectului
'Drive Letter'
,'Drive Name'
,'Total Space (GB)'
,'Free Space (GB)'
,'Free Space (%)'
și'Status'
., - returnați raportul final
copiați codul de mai jos și salvați scriptul cu numele fișierului Get-DiskSpace.ps1
. Nu uitați să schimbați valorile $Critical
și $Warning
variabile dacă doriți să testați cu praguri diferite.după ce scriptul este salvat, testați-l apelând numele său în PowerShell. Mai jos este demonstrația de probă a modului în care funcționează acest script.,
după Cum puteți vedea de la ieșire, starea pentru fiecare disc este determinată de spațiu liber pe disc procent, care a fost rezultatul folosirii mai multor condiții cu PowerShell Dacă-Altceva.
multiple și imbricate If-Else
Să presupunem că aveți o declarație if-else cu o condiție definită în else
bloc., Când instrucțiunea if-else rulează, blocul else
este invocat dacă codul din interiorul blocului if
returnează false.
în interiorul blocului else
, trebuie să efectuați un alt test condiționat. Drept urmare, aveți nevoie de o altă declarație If-Else. Acest scenariu se numește imbricat dacă-altceva. Declarația imbricată If-Else este folosită în mod obișnuit dacă If-Else interior depinde de rezultatul operației în exterior If-Else.
folosind mai multe și imbricate dacă-altceva declarații poate fi destul de confuz., Punctul cheie este să vă amintiți plasarea schelei și să vă asigurați că vă Indentați codul. Indentarea codului vă va ajuta să recunoașteți și să separați cu ușurință declarațiile If-Else.
exemplu de declarații If-Else multiple/imbricate
scriptul exemplu de mai jos arată cum multiple și imbricate If-Else poate depinde de rezultatul reciproc. Logica codului de mai jos este următoarea.
- Dacă
$SendEmail
este$false
, script-ul nu va face nimic și de ieșire., - Dacă
$SendEmail
este$true
, apoi$From
și$To
variabile nu trebuie să fie gol sau null. În caz contrar,$abortFlag
va fi setat la 1. - Dacă
$SendEmail
este$true
și$CCEnabled
este$true
, apoi$CC
variabilă nu trebuie să fie gol sau null. În caz contrar,$abortFlag
va fi setat la 1., - Dacă
$SendEmail
este$true
și$BCCEnabled
este$true
, apoi$BCC
variabilă nu trebuie să fie gol sau null. În caz contrar,$abortFlag
va fi setat la 1. - dacă valoarea
$abortFlag
este 1, scriptul va ieși în acest moment și nu va continua. - dacă valoarea
$abortFlag
este 0, scriptul continuă până la sfârșit.
copiați codul de mai jos și salvați-l ca Send-MyMail.ps1
. Nu modificați încă nicio valoare.,după ce ați salvat fișierul, rulați-l în PowerShell așa cum se arată mai jos. Demonstrația de mai jos arată rezultatul scriptului atunci când valorile variabile rămân neschimbate.
Apoi, editați script-ul și de a actualiza toate variabilele corect ca acest fragment de mai jos.
după editarea variabilelor, salvați scriptul și rulați-l din nou. Ar trebui să vă arate același rezultat, așa cum se vede mai jos.,
Acum, modifica variabilele și să încerce diferite combinații pentru a testa modul în care imbricate Dacă-Altfel vor fi afectate. Modificarea și testarea pe cont propriu ar ajuta să înțelegeți logica în continuare.
rezumat
În acest articol, ați aflat despre construcția logică condiționată – construcția PowerShell If-Else., Utilizarea instrucțiunii If-Else permite scripterilor să formuleze logica condiționată și să direcționeze acțiunile scripturilor lor pe baza rezultatelor testelor.cu exemplele prezentate în acest articol, ar fi trebuit să învățați modalități și tehnici cu privire la modul de utilizare a declarației If-Else atunci când creați un cod bazat pe decizii. If-Else poate fi simplu folosind o singură condiție și devine mai complexă în timp ce săpați mai adânc în declarațiile imbricate If-Else.ce părere aveți despre declarația If-Else? Este ceva ce credeți că veți folosi din ce în ce mai mult după ce ați citit acest articol?, Ce alte scopuri vă puteți gândi unde puteți aplica cunoștințele pe care le-ați dobândit aici?
Lectură suplimentară
- despre If
- înapoi la elementele de bază: bucla PowerShell foreach