Ce face if / elseif / else
if evaluează condiția din paranteze și, dacă e adevărată, rulează blocul din acolade. Poți adăuga oricâte elseif, verificate în ordine doar dacă cele de dinainte au fost false, și un else final. Condițiile se scriu cu operatorii de comparație (-eq, -gt, -like…) și se combină cu -and, -or, -not.
Condiția nu trebuie să fie neapărat $true/$false: $null, 0, textul gol și o colecție goală se consideră false, aproape orice altceva adevărat. De aceea if ($fisiere) verifică dacă o comandă a găsit ceva, iar if (Test-Path $cale) dacă o cale există. Pentru multe ramuri care compară aceeași valoare, switch e mai ușor de citit.
Din PowerShell 7.0 există operatorul ternar condiție ? valoare1 : valoare2, ca în C#: întoarce prima valoare dacă condiția e adevărată, altfel pe a doua. Dacă o parte este o comandă (de exemplu Test-Path), pune-o între paranteze. În Windows PowerShell 5.1 operatorul nu există, acolo folosești if/else.
Parametri
| Parametru | Descriere |
|---|---|
if (cond) { } |
Rulează blocul dacă cond e adevărată. |
elseif (cond) { } |
Încă o condiție, verificată doar dacă cele anterioare au fost false. |
else { } |
Rulează dacă nicio condiție nu a fost adevărată. |
cond ? a : b |
Operatorul ternar (PowerShell 7.0+): întoarce a sau b. |
-and / -or / -not |
Combină sau neagă condiții; ! e echivalent cu -not. |
Exemple
Exemplul 1: Calificativ după notă
Se verifică pe rând; prima condiție adevărată câștigă.
$nota = 7
if ($nota -ge 9) {
'Foarte bine'
}
elseif ($nota -ge 5) {
'Promovat'
}
else {
'Nepromovat'
}
Ieșire în terminal
Promovat
Exemplul 2: Operatorul ternar pentru stoc
Forma scurtă întoarce direct textul potrivit, pe care îl salvezi într-o variabilă.
$stoc = 0
$mesaj = $stoc -gt 0 ? 'În stoc' : 'Stoc epuizat'
$mesaj
Ieșire în terminal
Stoc epuizat
Exemplul 3: Condiții cu comenzi
Comanda din condiție se pune în paranteze. A doua verificare combină două condiții cu -and.
$cale = 'C:\Proiecte\facturi'
(Test-Path $cale) ? 'Folderul există' : 'Folderul lipsește'
$total = 250
if ($total -gt 100 -and $total -le 500) { 'Livrare gratuită în Iași' }
Ieșire în terminal
Folderul există
Livrare gratuită în Iași
Greșeli frecvente
- Să scrii
if ($nota > 5)sauif ($a = 5): primul creează fișierul5, al doilea atribuie. Folosește-gtși-eq. - Să scrii
else ifdespărțit: în PowerShell cuvântul esteelseif. - Să scrii
Test-Path $cale ? 'da' : 'nu'fără paranteze: PowerShell trimite?ca argument luiTest-Pathși dă eroare. Scrie(Test-Path $cale) ? 'da' : 'nu'. - Să folosești operatorul ternar într-un script care rulează și în Windows PowerShell 5.1: acolo e eroare de sintaxă.
Comenzi înrudite
Operatori de comparație: PowerShell compară cu -eq, -ne, -gt, -lt, -like, -match, -contains, -in, nu cu = sau >; implicit nu ține cont de majuscule.switch: switch compară o valoare (sau fiecare element al unei colecții) cu mai multe modele și rulează blocul celor potrivite; are -Wildcard și -Regex.try / catch / finally: try/catch prinde erorile care opresc o comandă, iar finally rulează mereu; pentru erorile obișnuite ale cmdlet-urilor pui -ErrorAction Stop.Test-Path: Verifică dacă o cale există și întoarce True sau False; poate cere să fie fișier sau folder și să fie mai nouă decât o dată.