PowerShell 中的邏輯運算子

Marion Paul Kenneth Mendoza 2023年1月30日
  1. PowerShell 邏輯運算子
  2. PowerShell 中的 -and 運算子
  3. PowerShell 中的 -or 運算子
  4. PowerShell 中的 -xor 運算子
  5. PowerShell 中的 -not 運算子
PowerShell 中的邏輯運算子

邏輯運算子可以將各種條件轉換為單個條件。

本文將討論真實世界的示例,並使用 PowerShell 在指令碼中應用邏輯運算子。

PowerShell 邏輯運算子

邏輯運算子有 andorxornot!

PowerShell 中的 -and 運算子

如果 $a$btrue,則輸出為 true;否則,false

真值表:

A B 輸出
0 0 0
1 0 0
0 1 0
1 1 1
$a = 0
$b = 0
$a -and $b # false (if both variables are false)

$a = 1
$b = 0
$a -and $b  # false (if any of the variables are false)

$a = 1
$b = 1
$a -and $b # true (if both variables are true)

-and 運算子僅在兩者都為真時才返回 true。一般來說,-and 運算子用於我們希望檢查和滿足所有條件的地方。

這是需要滿足的兩個條件的示例。

$attendance = 102
$paid = "Y"
if($attendance -gt 100 -and $paid -eq "Y"){
    Write-Output "Allow for examination."
}

輸出:

Allow for examination.

PowerShell 中的 -or 運算子

-and 運算子相比,如果 $a$bfalse,則輸出為 false

-or 運算子只需要一個變數為 true 即可輸出 true

真值表:

A B 輸出
0 0 0
1 0 1
0 1 1
1 1 1
$a = 0
$b= 0
$a -or $b # false (if both conditions are false)

$a = 1
$b = 0
$a -or $b # true (if any of the variables are true)

$a = 1
$b = 1
$a -or $b  # true (if both of the variables are true)

-or 運算子僅在兩個條件都為 false 時才返回 false。通常,當將任何條件視為 true 時,會使用 -or 運算子。

$attendance = 99
$marks = 201
if($attendance -gt 100 -or $marks -gt 200){
    Write-Output "Give five extra marks."
}

輸出:

Give five extra marks.

PowerShell 中的 -xor 運算子

如果 $a$b 中只有一個是 true,則異或 or-xortrue 的結果。如果兩個條件都是 true-xor 會產生 false 的結果。

真值表:

A B 輸出
0 0 0
1 0 1
0 1 1
1 1 0
('a' -eq 'A') -xor ('a' -eq 'z') # true as one of them is true
('a' -eq 'A') -xor ('Z' -eq 'z') # false as both of them is true
('a' -eq 's') -xor ('Z' -eq 'p') # false as both of them are false

PowerShell 中的 -not 運算子

-not 運算子返回與表示式輸出相反的結果。如果表示式的輸出為 true,則運算子將其返回為 false,反之亦然。

-not ('a' -eq 'a') # false as the output of expression is true
-not ('v' -eq 'a') # true as output expression is false
-not ('v' -eq 'V') # false as output expression is true
-not ('V' -eq 'V1') # true as output expression is false

感嘆號!-not 運算子相同。

!('a' -eq 'a')  # false as the output of expression is true
!('v' -eq 'a') # true as output expression is false
!('v' -eq 'V') # false as output expression is true
!('V' -eq 'V1') # true as output expression is false
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn