powershell比较运算符分数字、字符串、模式三类:数字用-eq/-gt等;字符串默认不区分大小写,加c前缀如-ceq则区分;-like支持通配符,-match支持正则,加c前缀亦可区分大小写;注意避免赋值与比较混淆。
powershell 的比较运算符是条件判断的核心工具,既能处理数字大小比较,也能进行字符串内容、模式或大小写敏感性判断。关键在于选对运算符——数字用 -eq、-gt 等,字符串默认不区分大小写,要用 -ceq、-clike 等带 c 前缀的才区分大小写。
数字比较:用标准算术风格运算符
PowerShell 对数字(整数、浮点数)使用直观的比较运算符,结果为 $true 或 $false,可直接用于 if、while 等语句:
-
-eq:等于(5 -eq 5→$true) -
-ne:不等于(3 -ne 4→$true) -
-gt、-ge:大于、大于等于 -
-lt、-le:小于、小于等于
注意:PowerShell 会自动尝试类型转换。比如 "10" -gt 5 会把字符串 "10" 转成整数再比较,结果为 $true;但如果字符串无法转为数字(如 "abc" -gt 5),则整个表达式返回 $false,不会报错。
字符串相等与包含判断:默认不区分大小写
PowerShell 字符串比较默认忽略大小写,适合多数日常场景:
-
-eq:内容相等("Hello" -eq "HELLO"→$true) -
-ne:不相等 -
-contains/-notcontains:用于数组是否包含某字符串(@("a","b") -contains "A"→$true) -
-in/-notin:反向检查("a" -in @("A","b")→$true)
如果需要严格区分大小写,把 - 换成 -c 前缀即可:用 -ceq 代替 -eq,-cne 代替 -ne,-cin 代替 -in。
字符串模式匹配:用 -like 和 -match
这两类运算符支持通配符或正则表达式,常用于文件名筛选、日志解析等:
-
-like:通配符匹配(*匹配任意字符,?匹配单个字符)
示例:"file.txt" -like "file.*"→$true;"Report2024.pdf" -like "Report????.*"→$true -
-match:正则表达式匹配(返回布尔值,同时将匹配结果存入$matches变量)
示例:"abc123" -match "\d+"→$true;匹配后$matches[0]是"123"
同样,加 c 前缀(-clike、-cmatch)即启用大小写敏感匹配。
常见陷阱与建议
实际写脚本时容易踩坑,注意以下几点:
- 别混淆
=(赋值)和-eq(比较)——if ($a = 5)是赋值并恒为真,应写if ($a -eq 5) - 字符串和数字混用比较时,PowerShell 优先转成数字;若失败就当
$false,建议显式转换避免歧义,例如用[int]$str或[double]$str -
-contains和-in针对的是集合成员关系,不是子字符串查找;要查子串用.Contains()方法或-match,例如"PowerShell" -match "shell" - 在
Where-Object中用比较运算符更简洁:Get-Process | Where-Object { $_.CPU -gt 100 }











