Control flux

Finalizat

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 este True.
  • $False indică faptul că o expresie este False.

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.