运算符

PowerShell支持多种运算符

算数运算符

算数运算符用来进行数学运算。

运算符 功能
+ 计算两个数之和
- 计算两个数之差
* 计算两个数的积
/ 计算两个数的商
% 计算两个数的余数
# 算数运算符
1 + 1 # 2
9 / 6 # 1.5(System.Double),保留小数,不同于C#等语言
9 / 0 # 报错,除数不能为0
0.0 / 0 # NaN,非数字
"4" * "4" # 16
1 + "1" # 2,当作加法
"1" + 1 # 11,当作字符串链接
3*"3" # 9 当作乘法
"3" * 3 # 当作重复字符串

关系运算符

关系运算符用来进行相等和大小判定。

运算符 功能
-gt 大于
-lt 小于
-eq 等于
-ne 不等于
-ge 大于等于
-le 小于等于

逻辑运算符

逻辑运算符用来对逻辑类型进行运算。

运算符 功能
-and 并且
-or 或者
-not
-xor 亦或
and true false
true true false
false false false
or true false
true true true
false true false
not true false
- false true
xor true false
true false true
false true false

集合运算符

运算符 功能
collection -contains item 集合是否包含元素
item -in collection 元素是否在集合中
collection + item 链接集合
1,2,3 -contains 4 # False
9 -in 9,8,7 # True
1,2 + 3,4 # 链接数组

字符串运算符

运算符 功能
+ 链接字符串
* 重复字符串
-eq,-ieq 字符串是否相对,不区分大小写
-ceq 判断字符串是否相等,区分大小写
format -f collection 格式化字符串
"1" + "1" # 11
"abc" + "def" # abcdef
"1" * 5 # 11111
"hello" * 2 # hellohello

字符串匹配运算符

运算符 功能
s -like filter-ilike 字符串s是否匹配通配符,不区分大小写
s -clike filter 字符串s是否匹配通配符,不区分大小写
s -match regex-imatch 字符串s是否匹配正则表达式,不区分大小写
s -cmatch regex 字符串s是否匹配正则表达式,区分大小写
"abc" -like "ab*" # True
"hello" -match "l+" # True

# 使用Regex类型进行完全匹配
#$regex = [regex]"abc"
$matches = $regex.Matches("abcdefabc")
# 创建带选项的正则表达式
$matches = New-Object System.Text.RegularExpressions.Regex "abc","IgnoreCase,Multiline"
foreach($match in $matches)
{
    $match
}

字符串替换运算符

运算符 功能
s -replace find,replace 字符串s中符合条件的字符进行替换
"abcabc" -replace "abc","def"

其他运算符

运算符 功能
-is 判断对象是否是指定类型
:: 静态成员访问运算符
. 对象成员访问运算符
| 管道运算符
, 逗号运算符,创建数组
.. 创建范围数组
& 执行命令
& 执行代码块
"abc" -is [string] # 要使用类型名
[System.DateTime]::Now # 访问静态成员
"abc".ToUpper() # 访问成员
dir | fl # 通过管道格式化结果
1,2,3 # 创建数组
1..10 # 创建包含1~10这些元素的数组
&"dir" # &可以将字符串当作命令来运行,但是不支持参数
&{dir} # &可以执行代码块