主題 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