PowerShell 基础66 条

运算符总览

算术、比较、逻辑、赋值与字符串运算一览;PowerShell 比较运算符不是符号(-eq/-gt),这是与 C 系语言的主要差异。

Windows 运维速查系统更新于 2026-10-13

运算符总览

PowerShell 的运算符分算术、比较、逻辑、赋值与字符串几类。最容易与其它语言混淆的是比较运算符:它不用符号而是以连字符开头的单词形式,例如 -eq、-gt、-like,冒号里的等号在 PowerShell 里是赋值而不是比较。

基本信息

适用平台Windows PowerShell 5.1 与 PowerShell 7
算术+ - * / %,另有 -shl 与 -shr 位移
比较-eq -ne -gt -ge -lt -le,另有 -like -match -contains -in
逻辑-and -or -not,以及 -xor
赋值= += -= *= /= ++ --
字符串-join -split -replace -contains -in
大小写默认不区分,加 c 前缀如 -ceq -clike 表示区分

典型使用场景

  • 条件判断:比较版本号、大小与状态值
  • 字符串筛选:用 -like 做通配匹配,-match 做正则匹配
  • 集合判断:-contains 与 -in 判断元素是否属于某个集合
  • 字符串加工:-split 拆分、-join 拼接、-replace 替换
  • 布尔组合:用 -and 与 -or 组合多个条件

常用示例

常用示例
# 算术与优先级,先乘除后加减
3 + 4 * 2
# 字符串拆分与拼接
'a,b,c' -split ','
1..5 -join '-'
# 比较:判断服务是否在运行
(Get-Service Spooler).Status -eq 'Running'
# 通配匹配与正则匹配
'D:\logs\app.log' -like '*.log'
'v1.2.3' -match '^v\d+'
# 集合判断
@('a','b') -contains 'b'
# 区分大小写
'ABC' -ceq 'abc'

运算符分类速查

类别常用写法典型用途
算术+ - * / %数值计算
比较-eq -ne -gt -lt数值与字符串比较
通配与正则-like -match模糊匹配与模式匹配
逻辑-and -or -not组合条件
字符串与集合-split -join -replace -contains -in文本加工与成员判断
比较运算符统一以连字符开头,需要区分大小写时加 c 前缀,例如 -ceq、-clike、-cmatch;默认形式在多数场景下不区分大小写。
不要用双等号或单个大于号做比较:前者在 PowerShell 里是赋值,后者是重定向符号,误用会把值写进变量或文件,反而看不到报错。

比较运算符对照

写法含义示例
-eq等于状态等于运行中
-ne不等于名称不等于空
-gt 与 -ge大于与大于等于内存大于阈值
-lt 与 -le小于与小于等于剩余空间小于下限
-like通配匹配以日志后缀结尾
数值比较与字符串比较要分清:从文本文件或 CSV 读回的字段都是字符串,直接比较会按字符逐位判断,涉及数值时应先做类型转换再比较。

易错点

  • 用双等号做比较实际执行的是赋值,结果永远为真,是最高频的语法误解
  • 用单个大于号做比较会被当成重定向,可能直接覆盖一个同名文件
  • 字符串比较默认不区分大小写,安全校验类场景必须用带 c 前缀的写法
  • -like 使用通配符而 -match 使用正则,混用会得到与预期不同的匹配结果
  • 集合判断用反了方向:判断集合是否包含元素用 -contains,判断元素是否在集合里用 -in

数据来源与参考

  • Microsoft Learn:about_Operators
  • Microsoft Learn:about_Comparison_Operators

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌