PowerShell Expressions

about_Operators
about_Operator_Precedence

不同 types 参与计算,算式结果的类型为左边操作数的 type。

'b' + 2  # 'b2'
2 + 'b'  # Error,'b' 不能转为 int

10 -gt 5    # True
"10" -gt 5  # False

Arithmetic Operators

about_Arithmetic_Operators

+* 可以用于字符串、数组和哈希表:

'a' + 'b'  # 'ab'
'a' * 3    # 'aaa'

Comparison Operators

about_Comparison_Operators

关于大小写,例如

-contains, -in, -is 等始终返回 Boolean value。除此之外,如果 input

"abc" -eq "abc"
# true

"abc" -eq "abc", "def"
# false

"abc", "def" -eq "abc"
# "abc"

-like 使用通配符

"Windows PowerShell" -like "*shell"
# true

-match 使用 regex。如果 input 是 scalar,将修改 $matches 自动变量

"Sunday" -match "sun"
$matches

-contains

"abc", "def", "ghi" -contains "abc"
# true

"abc", "def", "ghi" -contains "abc", "def"
# false

Logical Operators

逻辑操作符

# -and, -or, -xor, -not, !
about_Logical_Operators

Assignment Operators

about_Assignment_Operators

&

call operator &

调用命令

node.exe --version
& "C:\Program Files\nodejs\node.exe"

如果命令路径中有空格,需要用引号包裹,然后使用 &,让 PowerShell 将该 string 当作命令。

& 也可以调用 ScriptBlocks

& { Get-Location }

三元操作符

PowerShell 不支持 ?: 三元操作符,可以用下面方式实现

$a = if ($true) { 'a' } else { '' }