Skip to content

Operators(运算符)

1. 算术运算

  • + - * / % 基本算术
  • 幂:[math]::Pow(2,10)(.NET 方法)
  • 自增/自减:$i++--$i

2. 比较运算(区分类型与大小写)

  • 一般比较:-eq -ne -gt -ge -lt -le
  • 大小写敏感:在比较符前加 c,如 -ceq -cne
  • 大小写不敏感(默认):加 i,如 -ieq -ine(等同默认字符串比较)

3. 通配与正则

  • 通配符匹配:-like-notlike* ?
  • 正则匹配:-match-notmatch,匹配后 $Matches 自动变量保存分组

4. 包含与集合

  • 数组包含:-contains(左操作数是集合,判断是否包含右边的“元素”)
  • 反向包含:-in(右侧是集合)
  • 子集判断:Compare-Object 或使用集合运算(见下)

5. 字符串运算

  • 连接:'a' + 'b' 或内插 "$a$b"
  • 重复:'a' * 3 # 'aaa'

6. 逻辑运算与位运算

  • 逻辑:-and -or -not(短路求值)
  • 位运算:-band -bor -bxor -bnot -shl -shr

7. 赋值与复合赋值

  • 基本:=
  • 复合:+= -= *= /= %=

8. 类型与转换

  • 类型判断:-is -isnot
  • 尝试转换:-as(失败返回 $null

9. 重定向与管道

  • 管道:| 将对象传给下一个命令
  • 输出重定向(文本):> >> 2> 2>> *>>
  • Out-File/Set-Content/Add-Content 提供编码与追加控制

10. 比较对象与排序

powershell
Compare-Object (1,2,3) (2,3,4)           # 差异对比
1,5,3 | Sort-Object                      # 排序(稳定)
Get-ChildItem | Sort-Object Length -Desc

11. 模式匹配快捷

powershell
switch -Wildcard ($name) {
  'ab*' { 'starts with ab' }
  default { 'no match' }
}

switch -Regex ($text) {
  '^(?<letter>[a-z])' { $Matches.letter }
}

12. 常见陷阱

  • -contains-like 区分:前者是“集合包含元素”,后者是“字符串通配匹配”。
  • -eq 比较数组与标量:会逐项比较并返回布尔数组,在 if 中可能导致意外;可用 -contains/-in
  • 字符串比较默认不区分大小写,如需精确用 -ceq/-cne

本站内容仅供学习和研究使用。