about_Comparison_Operators
主題
about_Comparison_Operators
簡短描述
描述在 Windows PowerShell 中比較值的運算子。
完整描述
比較運算子可以用來指定條件,以進行值的比較並尋找符合指定模式的值。若要使用比較
運算子,請指定所要比較的值,以及分隔這些值的運算子。
根據預設,所有的比較運算子都不區分大小寫。若要使比較運算子區分大小寫,請在運算
子名稱之前加上 "c"。
例如,"-eq" 區分大小寫的版本是 "-ceq"。若要明確地設定區分大小寫,請在運算子
之前加上 "i"。例如,"-eq" 明確區分大小寫的版本是 "-ieq"。
內含項目運算子 (-contains、-notcontains) 和類型運算子 (-is、-isnot) 以外
的所有比較運算子,都會在運算子的輸入 (運算子左側的值) 為單一值 (純量) 時傳回布
林值。當輸入是值集合時,內含項目運算子和類型運算子會傳回任何符合的值。如果集合
中沒有符合項目,這些運算子就不會傳回任何資料。內含項目運算子和類型運算子一定會
傳回布林值。
Windows PowerShell 支援下列比較運算子。
-eq
描述:等於。包含相同的值。
範例:
C:\PS> "abc", "def" -eq "abc"
abc
-ne
描述:不等於。包含不同的值。
範例:
C:\PS> "abc", "def" -ne "abc"
def
-gt
描述:大於。
範例:
C:\PS> 8 -gt 6
True
-ge
描述:大於或等於。
範例:
C:\PS> 8 -ge 8
True
-lt
描述:小於。
範例:
C:\PS> 8 -lt 6
False
-le
描述:小於或等於。
範例:
C:\PS> 6 -le 8
True
-like
描述:使用萬用字元 (*) 進行比對。
範例:
C:\PS> "Windows PowerShell" -like "*shell"
True
-notlike
描述:不使用萬用字元 (*) 進行比對。
範例:
C:\PS> "Windows PowerShell" -notlike "*shell"
False
-match
描述:使用規則運算式比對字串。當輸入為純值時,會填入 $Matches 自動變數。
範例:
C:\PS> "Sunday" -match "sun"
True
C:\PS> $matches
名稱 值
---- -----
0 sun
-notmatch
描述:不比對字串。使用規則運算式。
當輸入為純值時,會填入 $Matches 自動變數。
範例:
C:\PS> "Sunday" -notmatch "sun"
False
C:\PS> $matches
名稱 值
---- -----
0 sun
-contains
描述:內含項目運算子。包含不是值一部分的相同值。一定會傳回布林值。
範例:
C:PS> "abc", "def" -contains "def"
True
-notcontains
描述:內含項目運算子。不包含相同的值。一定會傳回布林值。
範例:
C:PS> "Windows", "PowerShell" -notcontains "Shell"
True
-replace
描述:取代運算子。變更值的指定項目。
範例:
C:\PS> "Get-Process" -replace "Get", "Stop"
Stop-Process
等號比較運算子。
當一或多個輸入值與指定的模式相同時,等號比較運算子 (-eq、-ne) 會傳回 TRUE 或
相符項目的值。整個模式必須與整個值相符。
下列範例示範等於運算子的效果:
C:PS> 1,2,3 -eq 2
2
C:PS> "PowerShell" -eq "Shell"
False
C:PS> "Windows", "PowerShell" -eq "Shell"
C:PS>
C:\PS> "abc", "def", "123" -eq "def"
def
內含項目運算子
內含項目運算子 (-contains 和 -notcontains) 與等號比較運算子類似。不過,
即使輸入是集合,內含項目運算子也一定會傳回布林值。
此外,內含項目運算子會在偵測到第一個符合項目時就傳回值,這與等號比較運算子不同。
等號比較運算子會在評估所有輸入後,才傳回集合中的所有符合項目。
下列範例示範 -contains 運算子的效果:
C:PS> 1,2,3 -contains 2
True
C:PS> "PowerShell" -contains "Shell"
False
C:PS> "Windows", "PowerShell" -contains "Shell"
False
C:\PS> "abc", "def", "123" -contains "def"
True
C:\PS> "true", "blue", "six" -contains "true"
True
下列範例示範內含項目運算子與等於運算子的差異。內含項目運算子會在找到第一個符
合項目時傳回 TRUE 的值。
C:\PS> 1,2,3,4,5,4,3,2,1 -eq 2
2
2
C:\PS> 1,2,3,4,5,4,3,2,1 -contains 2
True
在很大的集合中,-contains 運算子傳回結果的速度會比等於運算子快。
比對運算子
比對運算子 (-match 和 -notmatch) 會使用規則運算式尋找符合或不符合指定模式
的元素。
語法如下:
<string[]> -match <regular-expression>
<string[]> -notmatch <regular-expression>
下列範例示範 -match 運算子的一些用法:
C:\PS> "Windows", "PowerShell" -match ".shell"
PowerShell
C:\PS> (get-command get-member -syntax) -match "-view"
True
C:\PS> (get-command get-member -syntax) -notmatch "-path"
True
C:\PS> (get-content servers.txt) -match "^Server\d\d"
Server01
Server02
比對運算子只會在字串中搜尋, 而無法在整數或其他物件的陣列中搜尋。
當運算子的輸入 (引數的左側) 是單一的純量物件時,-match 和 -notmatch 運算子
會填入 $Matches 自動變數。當輸入是純量時,-match 和 notmatch 運算子會傳
回布林值,並將 $Matches 自動變數的值設為引數的符合元件。
如果輸入為集合,則 -match 和 -notmatch 運算子會傳回該集合中符合的成員,但運
算子不會填入 $Matches 變數。
例如,下列命令會將字串集合提交給 -match 運算子。-match 運算子會傳回集合中
符合的項目, 而不會填入 $Matches 自動變數。
C:\PS> "Sunday", "Monday", "Tuesday" -match "sun"
Sunday
C:\PS> $matches
C:\PS>
相反地,下列命令會將單一字串提交給 match 運算子。-match 運算子會傳回布林值
並填入 $Matches 自動變數。
C:\PS> "Sunday" -match "sun"
True
C:\PS> $matches
名稱 值
---- -----
0 Sun
當輸入為純量且結果為 False (也就是偵測到相符項目) 時,-notmatch 運算子會填
入 $Matches 自動變數。
C:\PS> "Sunday" -notmatch "rain"
True
C:\PS> $matches
C:\PS>
C:\PS> "Sunday" -notmatch "day"
False
C:\PS> $matches
C:\PS>
名稱 值
---- -----
0 day
取代運算子
-replace 運算子可使用規則運算式以指定的值取代值的部分或全部。-replace 運
算子可用於許多管理工作,例如重新命名檔案。例如,下列命令會將所有 .gif 檔案
的副檔名變更為 .jpg:
Get-ChildItem | Rename-Item -NewName { $_ -replace '.gif$','.jpg$' }
-replace 運算子的語法如下,其中 <original> 預留位置代表要加以取代的字元,
而 <substitute> 預留位置則代表用來取代的字元。
<input> <operator> <original>, <substitute>
根據預設,-replace 運算子不區分大小寫。若要將其設為區分大小寫,請使用
-creplace。若要將其設為明確地區分大小寫,請使用 ireplace。請看以下範例:
C:\PS> "book" -replace "B", "C"
Cook
C:\PS> "book" -ireplace "B", "C"
Cook
C:\PS> "book" -creplace "B", "C"
book
位元運算子
Windows PowerShell 支援標準的位元運算子,包括位元運算 AND (-band) 和
Inclusive 和 Exclusive 位元運算 OR 運算子 (-bor 和 -bxor)。從 Windows
PowerShell 2.0 開始,所有位元運算子都可搭配 64 位元整數使用。
Windows PowerShell 支援下列位元運算子。
運算子 描述 範例
-------- ---------------------- -------------------
-band 位元運算 AND C:\PS> 10 -band 3
2
-bor 位元運算 OR (inclusive) C:\PS> 10 -bor 3
11
-bxor 位元運算 OR (exclusive) C:\PS> 10 -bxor 3
9
位元運算子是作用於二進位格式的值。例如,數字 10 的位元結構是 00001010 (以 1
位元組為基準),數字 3 的位元結構是 00000011。當您使用位元運算子來比較 10 和
3,就會對這兩個位元組進行個別位元比較。
在位元運算 AND 作業中,產生的位元只有在兩個輸入位元都為 1 時才會設為 1。
00001010 (10)
00000011 ( 3)
------------------ bAND
00000010 ( 2)
在位元運算 OR (inclusive) 作業中,產生的位元在其中一個或兩個輸入位元為 1 時
會設為 1。產生的位元只有在兩個輸入位元都設為 0 時才會設為 0。
00001010 (10)
00000011 ( 3)
------------------ bOR (inclusive)
00001011 (11)
在位元運算 OR (exclusive) 作業中,產生的位元只有在一個輸入位元為 1 時才會設
為 1。
00001010 (10)
00000011 ( 3)
------------------ bXOR (exclusive)
00001001 ( 9)
請參閱
about_Operators
about_Regular_Expressions
about_Wildcards
Compare-Object