一、算术运算符:
运算符 | 说明 | 示例 | 结果 |
+ | 将整数相加; | 1+1 | 2 |
- | 用一个值减去另一个值。 | 1-1 | 0 |
* | 将整数相乘; | 2*3 | 6 |
/ | 将两个值相除。 | 6/2 | 3 |
% | 返回除法运算的余数。 | 7%2 | 1 |
运算符优先级 Windows PowerShell 按照以下顺序处理算术运算符:
1. 圆括号 ()
2. - (对负数)
3. *, /, %
4. +,- (对减法)
二、赋值运算符:
运算符 | 说明 | 示例 |
= | 将变量的值设置为指定值。 | $var = ”test” |
+= | 使变量的值增加指定值,或将指定值追加到现有值。 | 略 |
-= | 使变量的值减少指定值。 | 略 |
*= | 将变量的值与指定值相乘,或将指定值追加到现有值。 | 略 |
/= | 将变量的值除以指定值。 | 略 |
%= | 将变量的值除以指定值,然后将余数(模)赋予变量。 | 略 |
++ | 使变量、可赋值属性或数组元素的值增加 1。 | 略 |
-- | 使变量、可赋值属性或数组元素的值减少 1。 | 略 |
三、比较运算符:
运算符 | 说明 | 示例 | 结果 |
-eq | 等于。包含一个相同的值。 | 1 -eq 1 | true |
-ne | 不等于。包含一个不同的值。 | 1 -ne 1 | false |
-gt | (>)大于 | 1 -gt 1 | false |
-ge | (>=)大于或等于 | 1 -ge 1 | true |
-lt | (<)小于 | 1 -lt 1 | false |
-le | (<=)小于或等于 | 1 -le 1 | true |
-like | 使用通配符 (*) 匹配。 | “abc” -like “*b*” | true |
-notlike | 使用通配符 (*) 不匹配。 | “abc” -notlike “*b*” | false |
-match | 当运算符的输入(左侧参数)是一个单标量对象时,-match 和 -notmatch 运算符填充 $Matches 自动变量。当输入是标量时,-match 和 notmatch 运算符返回布尔值,并将 $Matches 自动变量 的值设置为参数的匹配项目。 如果输入是一个集合,则 -match 和 -notmatch 运算符返回该集合中的匹配成员,但运算符不会填 充 $Matches 变量。 | 123 -match “^[/d]+$” | true |
-notmatch | 正则表达式比较 | 123 -notmatch “^[/d]+$” | false |
-contains | 包含运算符。包含一个相同的完整值(而不是值的一部分)。始终返回布尔值。 | "abc”,"def” -contains “abc” | true |
-notcontains | 包含运算符。不包含一个相同值。始终返回布尔值。 | "abc”,"def” -notcontains “abc” | false |
-replace | 替换,支持正则表达式 | “abc“ -replace “b”,"-" | a-c |
默认情况下,所有比较运算符都不区分大小写。若要使一个比较运算符区 分大小写,请在运算符名称前加字母"c"。例如,"-eq"区分大小写的形式 为"-ceq"。若要明确表示不区分大小写,则在运算符前加字母"i"。 例如,"-eq"的明确不区分大小写的形式为"-ieq"。
除包含运算符(-contains、-notcontains)和类型运算符(-is、-isnot)外的 所有比较运算符在运算符的输入(运算符左侧的值)是单个值(标量)时,都将 返回一个布尔值。当输入是值的集合时,包含运算符和类型运算符将返回任何 匹配值。如果集合中没有匹配项,则这些运算符不返回任何值。包含运算符和类型 运算符始终返回布尔值。
四、逻辑运算符:
运算符 | 说明 | 示例 | 结果 |
-and | 逻辑与。 | $true -and $false | false |
-or | 逻辑或。 | $true -or $false | true |
-xor | 逻辑异或。 | $true -xor $false | true |
-not | 逻辑非。对后面的语句取反。 | -not $true | false |
如果包含 and 运算符的 语句的左操作数为 FALSE,则不再计算右操作数。如果包含 or 运算符的语句的左操作数为 TRUE, 则不再计算右操作数。因此,可以像使用 If 语句一样使用这些语句。
五、重定向运算符:
运算符 | 说明 | 示例 |
> | 将输出发送到指定文件。 | get-process > process.txt |
>> | 将输出追加到指定文件的内容。 | dir *.ps1 >> scripts.txt |
2> | 将错误发送到指定文件。 | get-process none 2> errors.txt |
2>> | 将错误追加到指定文件的内容。 | get-process none 2>> save-errors.txt |
2>&1 | 将错误发送到成功输出流。 | get-process none, powershell 2>&1 |
如果指定的文件已存在,则不追加数据的重定向运算符(> 和 2>)将在不发出警告的情况下覆盖文件 当前内容。但是,如果该文件是只读、隐藏或系统文件,则重定向将会失败。追加重定向运算符(>> 和 2>>)不会写入只读文件,但会在系统或隐藏文件中追加内容。
要将内容强制重定向到只读、隐藏或系统文件,请带 Force 参数使用 Out-File cmdlet。当写入 文件时,重定向运算符使用 Unicode 编码(输出5个以下字符会乱码…)。如果文件采用的是不同的编码,可能无法正确设置输出的 格式。要将内容重定向到非 Unicode 文件,请带 Encoding 参数使用 Out-File cmdlet。
六、拆分运算符与联接运算符:
运算符 | 说明 | 示例 | 结果 |
-split | 拆分运算符。默认定界符是空白,包括空格以及如换行符 (`n) 和制表符 (`t) 等不可 打印字符。 | -split "red yellow blue green" | red,yellow,blue,green |
-join | 联接运算符。 | -join ("a", "b", "c") | abc |
在任何拆分语句中,都可用 -iSplit 或 -cSplit 替换 -split。 -iSplit 和 -split 运算符不区分大小写。-cSplit 运算符区分大小写,这意味着应用定界符规则时会考虑大小写。
七、类型运算符:
运算符 | 说明 | 示例 | 结果 |
-is | 当输入是一个指定的.NET Framework 类型实例时返回 True。 | (get-date) -is [datetime] | true |
-isnot | 当输入不是一个指定的.NET Framework 类型实例时返回 True。 | (get-date) -isnot [datetime] | false |
-as | 将输入转换为指定的.NET Framework 类型。 | "123” -as [int] | 123 |
八、位运算符:
运算符 | 说明 | 示例 | 结果 |
-bAND | 位与 | 10 -band 3 | 2 |
-bOR | 位或 | 10 -bor 3 | 11 |
-bXOR | 位异或 | 10 -bxor 3 | 9 |
九、特殊运算符:
运算符 | 说明 | 示例 |
& | 调用运算符。 | & "new cmdlet" |
. | 属性取消引用运算符。 | $myString.length |
:: | 静态成员运算符。 | [datetime]::now |
.. | 范围运算符。 | 1..10 |
-f | 格式运算符。 | "{0} {1,-10} {2:N}" -f 1,"hello",[math]::pi |
$( ) | 子表达式运算符。 | $($x * 23) $(Get-WMIObject win32_Directory) |
@( ) | 数组子表达式运算符。 | @(Get-WMIObject win32_logicalDisk) |
, | 运算符用作二元运算符时,逗号用于创建数组。用作一元运算符时,逗号用于创建只含一个成员的数组。 | $myArray = 1,2,3 |
这一章没有什么好说的啊,就是要记住的,以后会用到。