使用示例學習 PowerShell 不等於運算符

除了作為命令列工具外,PowerShell 是微軟推出的一種編程語言,可讓您控制和自動化系統。PowerShell 使用與大多數編程語言不同的語法來表示其運算符。

但是,一旦您理解了 PowerShell 運算符語法,您會發現它並不難使用。您在 PowerShell 中最常用的運算符之一是不等於運算符(-ne)。該運算符允許您測試兩個值是否不相等。

在本文中,您將了解 PowerShell 不等於運算符以及如何通過示例使用它。

先決條件

本教程將進行實踐演示。如果您想跟著做,請確保您有一個安裝了 PowerShell 的系統。本教程使用的是 Windows 10 和 PowerShell 7。

使用 PowerShell 不等於運算符(基礎)

簡而言之,PowerShell 不等於運算符(-ne)用於確定兩個對象的值是否不相等,並根據結果返回布爾值。如果值不相等,結果為True;否則,結果為False

但是,您如何在何時使用 PowerShell 不等於運算符?後續部分將教您 PowerShell 不等於的基礎知識。

比較變量

其中,PowerShell不等運算符的最常見用途之一是比較兩個變數。例如,假設你有兩個變數,$a$b,並且你想查看它們是否相等。比較語法如下:

$a -ne $b

如果$a$b的值不相等,則此比較將返回True。否則,它將返回False。

1. 在PowerShell控制台中運行以下命令,以創建作為示例使用的變數。$a、$b、$c和$d變數表示不同的值。你可以比較每個值,以測試它們是否相等。

為了了解PowerShell不等運算符如何處理相等值,你將$ c和$ d分配相同的值。

$a = 1
$b = 2
$c = 3
$d = 3

2. 現在,執行PowerShell不等比較,查看$a和$b的值是否不相等。

$a -ne $b

結果返回True,因為$a的值是1,而$b是2,這兩個值不相等。

You will see a False output return, as shown in the image below, since the values of $c and $d are equal (3=3). variables with not equal values

3. 現在比較$c和$d變數,看它們是否也不相等。

$c -ne $d

你將看到一個False輸出,如下圖所示,因為$c和$d的值相等(3=3)。

Comparing variables with equal values

比較值

在使用PowerShell時,你想比較的並非所有對象都在變數中。在這種情況下,你可以直接使用PowerShell不等運算符比較值。

例如,下面的命令直接使用PowerShell不等運算符比較兩個值。

5 -ne 3

你將看到一個True值返回,如下所示,因為這些值不相等。

Comparing different values using the PowerShell not equal operator

另一方面,比較相等的值將返回False

5 -ne 5
Comparing equal values using the PowerShell not equal operator

從數組中刪除一個值

PowerShell 不等於運算符返回一個布爾結果,指示兩個值是否不相等。除了該功能外,此運算符還可以從數組中過濾項目。

例如,創建一個名為$numbers的變量,其中包含數字1到5的數組。

# 創建包含數字1到5的數組。
$numbers = 1..5
# 顯示數組
$numbers
Storing an array

然後,運行以下命令返回除一個數字(4)之外的數組。

$numbers -ne 4

現在您可以看到,該命令返回了數組中除數字4之外的每個數字。

Filtering an array

比較字符串

除了數字,您還可以對字符串應用 PowerShell 不等於比較。

1.例如,假設您有兩個字符串,“Hello”和“World”。要確定這兩個字符串是否不相等,請運行以下命令。

"Hello" -ne "World"

結果為 True,因為“Hello”不等於“World”。

Comparing unequal stings

2.現在比較字符串“Hello”和“hello”以查看它們是否相等。

"Hello" -ne "hello"

您將看到結果為 False,因為“Hello”等於“hello”。

Comparing two strings

PowerShell 不等運算子不區分大小寫。如前一步驟所示,”Hello” 等於 “hello”。但如果在比較字串值時需要區分大小寫,請將 -ne 運算子替換為 -cne 運算子,即表示區分大小寫不等於

"Hello" -cne "hello"

因此,根據 PowerShell 的定義,”Hello” 和 “hello” 不再被視為相等。

“Hello” and “hello”

在實際應用中使用 PowerShell 不等運算子(範例)

現在您已經了解 PowerShell 不等運算子的基本概念,以下部分將讓您體驗它在現實世界中的一些用途。

監控服務狀態

A staple of Windows systems administration is monitoring the server service status. This task involves filtering out which services whose Status Is Not Running.

例如,運行 Get-Service cmdlet 以顯示本地機器上的所有服務。

Get-Service

您可以在下面的輸出中看到所有停止和運行的服務。

Display all services

現在,為了過濾只有那些不是Running的服務,運行以下命令,並應用-ne運算子如下。

Get-Service | Where-Object {$_.Status -ne "Running"}

如下所示,在應用 PowerShell 不等比較後,狀態列僅顯示已停止的服務。

Filtering non-running services

同樣,運行以下命令以返回其狀態不是已停止的服務。

Get-Service | Where-Object {$_.Status -ne "Stopped"}

這一次,您只會看到正在運行的服務。

Showing all running services

結合 PowerShell 不等於與 AND 運算子

除了進行 1:1 比較外,您還可以將 PowerShell 不等於條件與另一個比較運算子,例如 -eq(等於),結合使用 -and 運算子。當您比較的物件必須滿足多個條件時,這種方法很有用。

例如,監視伺服器服務通常涉及確保所有自動服務都必須運行。執行以下命令列出所有狀態為 非運行 且啟動類型為 自動 的服務。在此示例中,物件值必須符合所有條件。

Get-Service | 
Where-Object {$_.Status -ne "Running" -and $_.StartType -eq "Automatic"} |
Select-Object Status,StartType,Name

現在您可以看到未運行的自動服務,這可以幫助您決定必須採取的操作。

PowerShell Not Equal match all conditions

添加 If/Else 條件邏輯

您還可以在條件語句中使用 PowerShell 不等於運算子,例如 if/else 語句。

例如,大多數情況下,如果其啟動類型值為自動,則服務必須運行。以下腳本獲取所有服務,檢查哪些自動服務未運行,並執行校正操作—顯示消息並啟動服務。

注意:Start-Service $_.Name 行被註釋掉並且不會運行。如果您想執行該命令,請取消註釋此行。

複製下面的程式碼並在 PowerShell 中執行。

Get-Service -ErrorAction SilentlyContinue | ForEach-Object {
    if ($_.Status -ne 'Running' -and $_.StartType -eq 'Automatic') {
        "The service [$($_.Name)] StartType is [$($_.StartType)] but its current Status is [$($_.Status)]"
        # 開始-服務 $_.名稱
    }
}

結果顯示哪些自動服務未執行。

Using PowerShell Not Equal in Conditional Logic

結論

在本文中,您了解了 PowerShell 不等於運算子。您也學會了如何通過示例使用它。現在,您應該對其運作原理有了很好的理解。

有了這些新發現的知識,您現在可以在 PowerShell 腳本中使用不等於運算子來測試條件。但請記住,還有其他比較運算子可用。您可能需要結合多個運算子來測試更複雜的條件。

Source:
https://adamtheautomator.com/powershell-not-equal/