Stai avendo difficoltà a comprendere gli operatori di confronto di PowerShell come eq
, ne
, ceq
e cne
? Se è così, continua a leggere.
Provenendo da un background di sviluppo software, la prima volta che ho avuto un momento di “Huh?” è stato quando ho visto per la prima volta gli operatori di confronto di PowerShell come eq
, ceq
, cne
, ecc. Tutti gli altri linguaggi hanno operatori di confronto, ma non proprio come PowerShell. Ero abituato a ==
e <>
.
Non solo la sintassi sembra completamente diversa rispetto ai tipici linguaggi di programmazione, ma si comportano anche in modo diverso quando si confrontano collezioni di valori.
È qualcosa che mi ha davvero intralciato nell’apprendimento di PowerShell, ma ora sembra come quel vecchio adagio sulla birra; è un gusto che si acquisisce.
Andiamo brevemente su cosa sia un operatore di confronto, nel caso tu non ne sia familiare, e approfondiamo le sfumature che PowerShell introduce. Presto sarai in grado di utilizzare gli operatori nei tuoi script PowerShell senza problemi.
Come ho detto, tutti i linguaggi di programmazione/scripting hanno operatori di confronto. Nel loro senso più basilare, gli operatori di confronto sono necessari per valutare come le cose diverse si confrontano con altre cose. Sono utilizzati per prendere due oggetti e vedere quale differenza (se ce n’è) c’è tra quei due oggetti.
Nel caso di PowerShell, gli operatori possono anche essere utilizzati per trovare elementi all’interno di collezioni di valori.
Per questo post, sto per parlare degli operatori di uguaglianza e di come PowerShell li utilizza. Questi sono eq
e ne
con i loro corrispettivi case-sensitive ceq
e cne
. Per una lista completa puoi consultare il sito Technet o utilizzare il comando Get-Help about_comparison_operators
nella console di PowerShell.
PowerShell -EQ e -CEQ
Se hai bisogno di verificare se un oggetto è uguale a un altro oggetto, devi utilizzare gli operatori eq
(case-insensitive) o ceq
(case sensitive). Questi operatori testano il valore di ogni entità che vuoi confrontare.
Quando ho iniziato a imparare PowerShell, facevo spesso qualcosa del genere
Presto capirai che non devi farlo. Il simbolo =
è un operatore di assegnazione, NON un operatore di confronto. Non puoi utilizzare il simbolo =
per confrontare un valore con un altro.
Il modo corretto per farlo è definire il valore da verificare sul lato sinistro dell’espressione e utilizzare l’operatore eq
. Ecco un esempio degli operatori eq
e ceq
e come vengono utilizzati.

Notate come eq
restituisce un valore booleano True
quando confrontiamo la nostra variabile con adam
, ma ceq
restituisce un valore booleano False
? Questo mostra la differenza di sensibilità alle maiuscole e minuscole tra i due operatori.
Questo è tutto molto bello per i valori scalari (singoli) ma è anche possibile trovare tutte le istanze di valori particolari utilizzando questi operatori. Ad esempio, utilizzare l’operatore -eq di PowerShell per filtrare gli elementi in un array:

Se si dispone di una variabile con una raccolta di valori come un array, è possibile utilizzare eq
e ceq
per trovare tutte le istanze di valori all’interno della raccolta.
Notare che ha trovato tutte le istanze dell’intero 9 che abbiamo cercato di confrontare. Utilizzo questo metodo utile tutto il tempo.
-NE e -CNE
Dall’altro lato, ci sono sia ne
che cne
. Sono esattamente l’opposto di eq
e ceq
ma mostrano lo stesso comportamento solo in modo opposto. Non testano l’uguaglianza, testano l’ineguaglianza.

I hope this gives a good explanation of the equality comparison operators. This really got me hung up as a newbie and it never really clicked for me until I was just beat into submission by error messages. I hope this post prevents the same beat down I received.