你是否在理解 PowerShell 比较运算符(如eq
、ne
、ceq
和cne
)方面感到困惑?如果是的话,请继续阅读。
作为一个有软件开发背景的人,我第一次看到 PowerShell 的比较运算符eq
、ceq
、cne
等时,我感到很困惑。所有其他编程语言都有比较运算符,但 PowerShell 的比较运算符不太一样。我习惯于使用==
和<>
。
不仅语法与典型的编程语言完全不同,而且在比较值的集合时也有不同的行为。
当我学习 PowerShell 时,这真的让我困惑了很久,但现在它看起来就像是那句老啤酒广告说的;它是一种习 acquired taste。
让我们简要介绍一下比较运算符是什么,如果你不熟悉的话,并深入探讨 PowerShell 引入的细微差别。不久之后,你就能毫不费力地在 PowerShell 脚本中使用运算符了。
如我所提到的,所有编程/脚本语言都有比较运算符。从最基本的意义上讲,比较运算符是必需的,用于评估不同事物与其他事物之间的差异(如果有)。它们用于获取两个对象,并查看这两个对象之间的差异(如果有)。
在 PowerShell 中,运算符还可以用于在值的集合中查找元素。
對於這篇文章,我將介紹相等運算子以及PowerShell如何使用它們。這些運算子是eq
和ne
,它們的區分大小寫的對應運算子是ceq
和cne
。完整的清單可以參考Technet網站,或者在PowerShell控制台中使用Get-Help about_comparison_operators
。
PowerShell中的-EQ和-CEQ
如果您需要檢查一個物件是否等於另一個物件,您必須使用eq
(不區分大小寫)或ceq
(區分大小寫)運算子。這些運算子將測試您想要比較的每個實體的值。
當我剛開始學習PowerShell時,我經常會像這樣做
您很快就會被警告不要這樣做。等號(=
)是一個賦值運算子,而不是比較運算子。您不能使用等號(=
)來比較一個值與另一個值。
正確的方法是在表達式的左側定義要檢查的值並使用eq
運算子。這裡有一個eq
和ceq
運算子的示例以及它們的使用方法。

注意,當將我們的變數與adam
進行比較時,eq
返回一個布林值True
,但ceq
返回一個布林值False
?這顯示了這兩個運算子之間區分大小寫的差異。
這對於純量(單一)值來說非常好,但您也可以使用這些運算符找到特定值的所有實例。例如,使用 PowerShell 的 -eq 運算符來過濾陣列中的項目:

如果您有一個包含多個值的變數,例如陣列,您可以使用 eq
和 ceq
找到集合內的所有值的實例。
請注意,它找到了我們嘗試比較的整數 9 的所有實例。我經常使用這個方便的方法。
-NE 和 -CNE
在相反的一面,您有 ne
和 cne
。它們與 eq
和 ceq
完全相反,但行為完全相同,只是相反。它們不測試相等性,而是測試不相等性。

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.