Heb je moeite met het begrijpen van PowerShell-vergelijkingsoperators zoals eq
, ne
, ceq
en cne
? Zo ja, lees dan verder.
Vanuit een achtergrond in softwareontwikkeling was het eerste moment dat ik dacht “Hè?” toen ik voor het eerst de vergelijkingsoperatoren van PowerShell zag, zoals eq
, ceq
, cne
, enz. Alle andere talen hebben vergelijkingsoperatoren, maar niet helemaal zoals PowerShell. Ik was gewend aan ==
en <>
.
Niet alleen ziet de syntaxis er volledig anders uit dan in je typische programmeertaal, ze gedragen zich ook anders bij het vergelijken van verzamelingen waarden.
Het was iets waar ik echt tegenaan liep toen ik meer leerde over PowerShell, maar nu lijkt het alsof het oude gezegde over bier van toepassing is; het is een verworven smaak.
Laten we kort doornemen wat een vergelijkingsoperator is als je er niet bekend mee bent, en duiken dieper in op de nuances die PowerShell introduceert. Binnen de kortste keren kun je operators zonder problemen gebruiken in je PowerShell-scripts.
Zoals ik al zei, hebben alle programmeer-/scripttalen vergelijkingsoperatoren. In de meest basale zin zijn vergelijkingsoperatoren noodzakelijk om te evalueren hoe verschillende dingen zich verhouden tot andere dingen. Ze worden gebruikt om twee objecten te nemen en te zien wat het verschil (indien aanwezig) is tussen die twee objecten.
In het geval van PowerShell kunnen operatoren ook worden gebruikt om elementen binnen verzamelingen van waarden te vinden.
Voor deze post ga ik de gelijkheidsoperatoren bespreken en hoe PowerShell ze gebruikt. Dit zijn eq
en ne
met hun hoofdlettergevoelige tegenhangers ceq
en cne
. Voor een volledige lijst kun je naar de Technet-site gaan of gewoon Get-Help about_comparison_operators
gebruiken in je Powershell-console.
PowerShell -EQ en -CEQ
Als je ooit moet controleren of een object gelijk is aan een ander object, moet je de operators eq
(hoofdletteronafhankelijk) of ceq
(hoofdlettergevoelig) gebruiken. Deze operators testen de waarde van elk entiteit die je wilt vergelijken.
Toen ik voor het eerst PowerShell leerde, deed ik constant zoiets als dit
Je zult snel genoeg leren om dat niet te doen. Het =
-teken is een toekenningsoperator, GEEN vergelijkingsoperator. Je kunt het =
-teken niet gebruiken om de ene waarde tegen de andere te vergelijken.
De juiste manier om dit te doen, is de waarde die je wilt controleren aan de linkerkant van de expressie te definiëren en de eq
-operator te gebruiken. Hier is een voorbeeld van de eq
– en ceq
-operators en hoe ze worden gebruikt.

Merk op hoe eq
een boolean True
-waarde teruggeeft bij het vergelijken van onze variabele met adam
, maar ceq
geeft een boolean False
-waarde terug? Dit toont het verschil in hoofdlettergevoeligheid tussen de twee operators.
Dit is allemaal goed en wel voor scalaire (enkele) waarden, maar je kunt ook alle instanties van specifieke waarden vinden met behulp van deze operatoren. Gebruik bijvoorbeeld de PowerShell -eq operator om items in een array te filteren:

Als je een variabele hebt met een verzameling waarden zoals een array, kun je eq
en ceq
gebruiken om alle instanties van waarden binnen de verzameling te vinden.
Merk op dat het alle instanties van het gehele getal 9 heeft gevonden waartegen we probeerden te vergelijken. Ik gebruik deze handige methode de hele tijd.
-NE en -CNE
Aan de andere kant heb je zowel ne
als cne
. Ze zijn precies het tegenovergestelde van eq
en ceq
maar vertonen precies hetzelfde gedrag alleen in tegenovergestelde zin. Ze testen geen gelijkheid, maar ongelijkheid.

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.