Gli operatori di confronto sono utilizzati in Windows PowerShell per mettere in relazione
due valori. Poichè ogni operatore compare sintatticamente tra i due valori da confrontare,
ciascuno dei due valori assume un nome particolare a seconda della propria posizione: il
primo è chiamato operando di sinistra, il secondo operando di destra.
Il risultato di un operazione di confronto è sempre un valore logico booleano che può
assumere il valore di vero ($true) oppure falso ($false) e
spesso questo tipo di blocco viene utilizzato come condizione abilitante per l'esecuzione di
un ciclo.
Dal punto di vista semantico ciascun operatore viene indicato utilizzando un prefisso ed una
sigla mnemonica che ne ricorda il compito.
L'operatore -eq, ad esempio, ritorna $true se i due operandi sono uguali
(equals) tra loro, come nell'esempio che segue:
3 -eq 3
L'operatore -ne, viceversa, ritorna $true quando i due operandi sono
differenti (not equals), come in questo caso:
3 -ne 5
Operatori più complessi permettono di confrontare due valori numerici nel dettaglio, come
nel caso di -gt che verifica se l'operando di sinistra è maggiore di quello di destra
(greater than) o di -lt, che verifica se l'operando di sinistra è
minore di quello di destra (less than).
Nell'esempio che segue, la prima espressione restituisce $false, la seconda
$true.
3 -gt 5
3 -lt 5
Altri operatori sono poi utilizzati per verificare la presenza di un determinato pattern
all'interno di una stringa.
L'operatore -like testa la presenza del pattern specificato nell'operando di destra
all'interno della stringa di sinistra, utilizzando i caratteri wildcard (?, *
e [ ]).
Nello script che segue, entrambi i comandi restituiscono $true.
"www.powershell.it" -like "*.it"
"www.powershell.it" -like "*shell?it"
Oltre che con i caratteri wildcard, è possibile verificare all'interno delle stringhe la
presenza di un pattern utilizzando anche le espressioni regolari, utilizzando l'operatore
-match.
Ecco come, ad esempio, è possibile verificare se l'operando di sinistra rappresenta un
C.A.P. italiano valido (ovvero una stringa con cinque cifre).
"35100" -match "^\d{5}$"
L'operatore -contains, infine, ritorna $true quando l'operando di destra è
contenuto nell'operando di sinistra. Di un array, ad esempio, è possibile verificare se tra
gli elementi compare quello interessato utilizzando uno script simile a questo:
@(2, 3, 5, 7) -contains 5
Tabella di riferimento
| Operatore |
Ritorna $true quando... |
| -eq |
Gli operandi sono uguali tra loro. |
| -ne |
Gli operandi sono differenti. |
| -gt |
L'operando di sinistra è maggiore di quello di destra. |
| -ge |
L'operando di sinistra è maggiore o uguale a quello di destra. |
| -lt |
L'operando di sinistra è minore di quello di destra. |
| -le |
L'operando di sinistra è minore o uguale a quello di destra. |
| -like |
L'operando di sinistra contiene il pattern wildcard specificato nell'operando di destra. |
| -notlike |
L'operando di sinistra non contiene il pattern wildcard specificato nell'operando di destra. |
| -match |
L'operando di sinistra contiene il pattern di espressione regolare specificato nell'operando di destra. |
| -notmatch |
L'operando di sinistra non contiene il pattern di espressione regolare specificato nell'operando di destra. |
| -contains |
L'operando di sinistra contiene l'elemento specificato nell'operando di destra. |
| -notcontains |
L'operando di sinistra non contiene l'elemento specificato nell'operando di destra. |