本系列是一个重新学习PowerShell的笔记,内容引用自PowerShell中文博客

条件操作符

比较

Powershell 中的比较运算符
-eq :等于
-ne :不等于
-gt :大于
-ge :大于等于
-lt :小于
-le :小于等于
-contains :包含
-notcontains :不包含
PS C:\PowerShell> 1 -eq 1                                                                                               True
PS C:\PowerShell> $arr = 1..10                                                                                          PS C:\PowerShell> $arr -contains 5                                                                                      True
PS C:\PowerShell> $arr -lt 5                                                                                            1
2
3
4

取反

求反运算符为-not 但是像高级语言一样”! “ 也支持求反。
PS C:\PowerShell> $r = $arr -contains 5                                                                                 PS C:\PowerShell> $r                                                                                                    True
PS C:\PowerShell> -not $r                                                                                               False
PS C:\PowerShell> !$r                                                                                                   False

布尔运算

-and :和
-or :或
-xor :异或
-not :逆
PS C:Powershell> $true -and $true
True
PS C:Powershell> $true -and $false
False
PS C:Powershell> $true -or $true
True
PS C:Powershell> $true -or $false
True
PS C:Powershell> $true -xor $false
True
PS C:Powershell> $true -xor $true
False
PS C:Powershell>  -not  $true
False

过滤器 Where-Object

-EQ

-Match 

-CEQ 

-NE 

-CNE 

-GT 

-CGT 

-LT 

-CLT 

-GE 

-CGE 

-LE 

-CLE 

-Like 

-CLike 

-NotLike 

-CNotLike 

-CMatch 

-NotMatch 

-CNotMatch 

-Contains 

-CContains 

-NotContains 

-CNotContains 

-In 

-CIn 

-NotIn 

-CNotIn 

-Is 

-IsNot 
PS C:\PowerShell> Get-Process | Where-Object -FilterScript {$_.Name -like "chrome"}                                                                                                          
Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    321      17    25288      44540       2.27   2520   1 chrome
    329      19    31924      78012       4.41   2692   1 chrome

条件表达式

If

PS C:\PowerShell> If($arr -notcontains 11 ){"都不包含11"}ElseIf($arr -gt 10){"大于10"}Else{"都不满足"}                                                                                       
都不包含11

Switch

$TValue = 100 
$domain="www.mossfly.com"
#多值匹配
switch ($TValue)
{
    {$_ -lt 200 }   { "小于5"}
    {$_ -gt 10 }   { "大于10"}
    {$_ -in 100,200,300} {"存在于100,200,300"}   
    Default {"匹配失败"}
}

"第二次匹配"
#匹配后跳出
switch ($TValue)
{
    {$_ -lt 200 }   { "小于5跳出";break}   
    {$_ -in 100,200,300} {"存在于100,200,300"}   
    Default {"匹配失败"}
}

"大小写敏感"

#大小写敏感
switch -case ($domain)
{
    "Www.moSSfly.com" {"Ok 1"}
    "www.MOSSFLY.com" {"Ok 2" }
    "www.mossfly.com" {"Ok 3"}
}

"使用通配符"

#使用通配符
switch -wildcard($domain)
{
    "*"     {"匹配'*'"}
    "*.com" {"匹配*.com" }
    "*.*.*" {"匹配*.*.*"}
}

"正则匹配"
#使用正则
switch -regex ($mail)
{
    "^www"     {"www打头"}
    "com$"     {"com结尾" }
    "d{1,3}.d{1,3}.d{1,3}.d{1,3}" {"IP地址"}
}
 
PS C:\PowerShell> .test.ps1                                                                                                                                                 小于5
大于10
存在于100,200,300
第二次匹配
小于5跳出
大小写敏感
Ok 3
使用通配符
匹配'*'
匹配*.com
匹配*.*.*
正则匹配