Ce face Operatori de comparație
PowerShell nu folosește ==, < sau > pentru comparații. Operatorii sunt cuvinte cu cratimă: -eq (egal), -ne (diferit), -gt (mai mare), -ge (mai mare sau egal), -lt (mai mic), -le (mai mic sau egal). Caracterul > este redirecționare: if ($nota > 5) nu compară nimic, ci scrie valoarea în fișierul 5. Comparațiile de text nu țin cont de majuscule; pentru asta există variantele cu c: -ceq, -clike, -cmatch.
-like compară cu un model wildcard (* orice text, ? un caracter, [a-z] un interval) și trebuie să se potrivească tot textul. -match folosește expresii regulate, caută oriunde în text și, când găsește, completează variabila automată $Matches ($Matches[0] este potrivirea întreagă, $Matches[1] primul grup). Tipul din dreapta se convertește la tipul din stânga: 8 -eq '8' este True.
Când în stânga este o colecție, -eq, -gt, -like, -match nu întorc True/False, ci elementele care se potrivesc. Pentru „conține?” folosește -contains (colecția în stânga) sau -in (valoarea în stânga, din Windows PowerShell 3.0); ele întorc mereu un boolean și caută o valoare întreagă, nu o bucată de text. Pentru a combina condiții ai -and, -or, -not (sau !).
Parametri
| Parametru | Descriere |
|---|---|
-eq / -ne |
Egal / diferit. |
-gt / -ge |
Mai mare / mai mare sau egal. |
-lt / -le |
Mai mic / mai mic sau egal. |
-like / -notlike |
Potrivire cu wildcard (*, ?, [ ]), pe tot textul. |
-match / -notmatch |
Potrivire cu expresie regulată; completează $Matches pentru o valoare simplă. |
-contains / -notcontains |
colecție -contains valoare: True dacă valoarea e în colecție. |
-in / -notin |
valoare -in colecție: inversul lui -contains (3.0+). |
-ceq, -clike, -cmatch... |
Variantele care țin cont de majuscule. |
-is / -isnot |
Verifică tipul: $x -is [int]. |
Exemple
Exemplul 1: Numere și text
Textul '8' e convertit la număr, pentru că în stânga e un număr. -eq ignoră majusculele, -ceq nu.
$nota = 8
$nota -gt 5
$nota -eq '8'
'Iași' -eq 'IAȘI'
'Iași' -ceq 'IAȘI'
Ieșire în terminal
True
True
True
False
Exemplul 2: Wildcard și expresii regulate
-like verifică extensia, -match găsește un număr de telefon oriunde în text și îl pune în $Matches.
'factura-2026.pdf' -like '*.pdf'
'Telefon Mihai: 0740123456' -match '07\d{8}'
$Matches[0]
Ieșire în terminal
True
True
0740123456
Exemplul 3: Comparații pe colecții
-gt pe un tablou filtrează elementele. -contains și -in întorc un singur boolean.
$note = 10, 7, 9, 4
$note -gt 6
$note -contains 4
5 -in $note
Ieșire în terminal
10
7
9
True
False
Greșeli frecvente
- Să scrii
>,<sau=într-o condiție:>redirecționează ieșirea într-un fișier,=atribuie. Folosește-gt,-lt,-eq. - Să folosești
-containspentru text:'PowerShell' -contains 'Shell'esteFalse, pentru că operatorul caută elemente în colecții. Pentru bucăți de text folosește-like '*Shell*'sau-match. - Să folosești
-like 'pdf'și să aștepți potrivire peraport.pdf: modelul trebuie să acopere tot textul, deci'*.pdf'. - Să citești
$Matchesdupă un-matchcare a eșuat sau a fost aplicat pe o colecție: variabila păstrează potrivirea anterioară.
Comenzi înrudite
if / elseif / else: if rulează un bloc de cod doar când condiția e adevărată; elseif și else tratează celelalte cazuri, iar ?: (din PowerShell 7.0) e forma scurtă.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.Where-Object: Filtrează obiectele din pipeline și le lasă să treacă doar pe cele care îndeplinesc o condiție.Variabile și tipuri: Variabilele încep cu $, primesc orice obiect .NET și pot fi legate de un tip ([int], [string], [datetime]); .GetType() arată tipul.Tablouri (@()): Un tablou ține mai multe valori; îl creezi cu virgule sau @(), îl citești cu [index], iar += creează de fiecare dată un tablou nou.