Control flux
controlul Flux se referă la modul în care rulează codul în consolă sau script. Descrie fluxul de urmează codul și modul în care controlați fluxul respectiv. Există diverse construcții disponibile pentru a vă ajuta să controlați fluxul. Codul poate rula toate instrucțiunile sau doar unele dintre ele. De asemenea, poate repeta anumite instrucțiuni până când îndeplinește o anumită condiție.
Să examinăm aceste construcții de control logic pentru a vedea ce pot face:
Sanitize intrare. Dacă utilizați parametri într-un script, trebuie să vă asigurați că parametrii au valori rezonabile, astfel încât scriptul dvs. să funcționeze conform așteptărilor. Scrierea codului pentru a gestiona acest proces se numește sanitizing input.
Flux de execuție control. Tehnica anterioară vă asigură că obțineți date de intrare rezonabile și corecte. Această tehnică este mai mult despre a decide cum să ruleze cod. Setul de valori poate determina ce grup de instrucțiuni rulează.
Iterați peste datele. Uneori, datele dvs. iau forma unei matrice, care este o structură de date care conține multe elemente. Pentru astfel de date, poate fi necesar să examinați fiecare element și să efectuați o operațiune pentru fiecare dintre ele. Multe construcții din PowerShell vă pot ajuta cu acest proces.
Notă
Iterarea peste matrice este în afara domeniului acestui modul. Există multe construcții pentru a gestiona controlul fluxului în PowerShell. Nu le putem denumi pe toate, dar vom vorbi despre unele importante pe care este posibil să le întâlniți în scripturi pe care le citiți sau le scrieți.
Gestionarea fluxului de intrare și execuție utilizând If
, ElseIf
și Else
Puteți utiliza o construcție de If
pentru a determina dacă o expresie este True
sau False
. În funcție de această determinare, este posibil să rulați instrucțiunea definită de If
construcție. Sintaxa pentru If
arată astfel:
If (<expression that evaluates to True or False>)
{
# Statement that runs only if the preceding expression is $True.
}
Operatorii
PowerShell are doi parametri încorporati pentru a determina dacă o expresie este True
sau False
:
-
$True
indică faptul că o expresie esteTrue
. -
$False
indică faptul că o expresie esteFalse
.
Puteți utiliza operatori pentru a determina dacă o expresie este True
sau False
. Există câțiva operatori. Ideea de bază este, de obicei, pentru a determina dacă ceva din partea stângă a operatorului se potrivește cu ceva din partea dreaptă, având în vedere condiția operatorului. Un operator poate exprima condiții precum dacă ceva este egal cu altceva, mai mare decât altceva sau se potrivește cu o expresie obișnuită.
Iată un exemplu de utilizare a unui operator. Operatorul -le
determină dacă valoarea din partea stângă a operatorului este mai mică sau egală cu valoarea din partea dreaptă:
$Value = 3
If ($Value -le 0)
{
Write-Host "Is negative"
}
Acest cod nu va afișa nimic, deoarece expresia se evaluează ca False
. Valoarea 3 este clar pozitivă.
Else
Construirea de If
rulează instrucțiuni numai dacă se evaluează ca True
. Ce se întâmplă dacă doriți să gestionați cazurile în care acestea se evaluează ca False
? Atunci folosești construcția Else
.
If
exprimă "dacă acest caz specific este adevărat, rulați acest angajament". Else
nu preia o expresie. Acesta capturează toate cazurile în care clauza If
se evaluează la False
. Atunci când sunt combinate If
și Else
, codul rulează instrucțiunile într-una dintre cele două construcții. Să modificăm codul anterior pentru a include o construcție de Else
:
$Value = 3
If ($Value -le 0)
{
Write-Host "Is negative"
} Else {
Write-Host "Is Positive"
}
Pentru că am pus Else
lângă acoladă de final pentru If
, am creat o construcție unită care funcționează ca una singură. Dacă rulați acest cod în consolă, veți vedea că Is Positive
se imprimă. Aceasta deoarece If
se evaluează ca False
, dar Else
se evaluează la True
. Așa că Else
își imprimă instrucțiunea.
Notă
Puteți utiliza Else
numai dacă există o construcție de If
definită imediat deasupra ei.
ElseIf
If
și Else
funcționează excelent pentru a acoperi toate căile pe care le poate lua codul.
ElseIf
este o altă construcție care poate fi utilă.
ElseIf
este menit să fie utilizat cu If
. Se spune "expresia din această construcție va fi evaluată dacă instrucțiunea de If
precedentă se evaluează la False
." La fel ca If
, ElseIf
poate lua o expresie, astfel încât să vă ajute să vă gândiți la ElseIf
ca la un secundar Dacă.
Iată un exemplu care utilizează ElseIf
:
# _FullyTax.ps1_
# Possible values: 'Minor', 'Adult', 'Senior Citizen'
$Status = 'Minor'
If ($Status -eq 'Minor')
{
Write-Host $False
} ElseIf ($Status -eq 'Adult') {
Write-Host $True
} Else {
Write-Host $False
}
Este posibil să scrieți acest cod într-un mod mai compact, dar astfel se afișează utilizarea ElseIf
. Arată cum If
este evaluată mai întâi, apoi ElseIf
, apoi Else
.
Notă
La fel ca în cazul Else
, nu puteți utiliza ElseIf
dacă nu definiți o If
deasupra ei.