# Powershell 条件操作符
# Powershell 中的比较运算符
# -eq :等于
# -ne :不等于
# -gt :大于
# -ge :大于等于
# -lt :小于
# -le :小于等于
# -contains :包含
# -notcontains :不包含
# 进行比较
# 可以将比较表达式直接输入进Powershell控制台,然后回车,会自动比较并把比较结果返回。
#(3,4,5) -contains 2
#求反
# 求反运算符为-not 但是像高级语言一样
# $a = 2 -eq 3
# $a
# -not $a
# 布尔运算
#
# -and :和
# -or :或
# -xor :异或
# -not :逆
# 1,2,3,4,3,2,1 -ne 3
# 1,9,4,5 -contains 9
# 1,9,4,5 -contains 10
#Powershell Where-Object 条件过滤
# 过滤管道结果
# Get-Process | select -First 1 | fl *
# 根据进程名过滤所有记事本进程。
# Get-Process | Where-Object {$_.Name -eq "notepad"}
#根据进程名过滤所有IE进程。
# Get-Process | Where-Object {$_.Name -eq "iexplore"}
#根据company过滤所有产品发布者以”Microsoft”打头的进程:
# Get-Process | Where-Object {$_.company -like '*Microsoft*' } | select Name,Description,Company
#使用别名 ?
# Get-Service | ? {$_.Name -like "B*"}
#Powershell IF-ELSEIF-ELSE 条件
# If(条件满足){
# 如果条件满足就执行代码
# }
# Else
# {
# 如果条件不满足
# }
#if($n -lt 0 ){"-1" } elseif($n -eq 0){"0"} else {"1"}
# Powershell Switch 条件
# 使用 Switch
# switch($value)
# {
# 1 {"Beijing"}
# 2 {"Shanghai"}
# 3 {"Tianjin"}
# 4 {"Chongqing"}
# }
# 测试取值范围
# $value=18
#
# switch($value)
# {
# {$_ -gt 10} {"大于10";break}
# 10 {"等于10";break}
# {$_ -lt 10} {"小于10";break}
# Default {"没有匹配条件";break}
# }
#比较字符串
# eq比较大小写不敏感,所以才有下面的例子:
#
# $domain="www.mossfly.com"
# switch($domain)
# {
# "Www.moSSfly.com" {"Ok 1"}
# "www.MOSSFLY.com" {"Ok 2" }
# "WWW.mossfly.COM" {"Ok 3"}
# }
# Switch有一个-case 选项,一旦指定了这个选项,比较运算符就会从-eq 切换到 -ceq,即大小写敏感比较字符串
# $domain="www.mossfly.com"
# #大小写敏感
# switch -case ($domain)
# {
# "Www.moSSfly.com" {"Ok 1"}
# "www.MOSSFLY.com" {"Ok 2" }
# "www.mossfly.com" {"Ok 3"}
# }
# 使用通配符
# 字符串非常特殊,可是使用通配符,但是在Switch语句后要指定 -wildcard 选项
$domain="www.mossfly.com"
#使用通配符
# switch -wildcard($domain)
# {
# "*" {"匹配'*'"}
# "*.com" {"匹配*.com" }
# "*.*.*" {"匹配*.*.*"}
# }
#
# 通配符功能更强大是正则表达式,当然需要给Switch关键字指定选项-regex
# $mail="www@mossfly.com"
#使用通配符
# switch -regex ($mail)
# {
# "^www" {"www打头"}
# "com$" {"com结尾" }
# "d{1,3}.d{1,3}.d{1,3}.d{1,3}" {"IP地址"}
# }
# 同时处理多个值
# Switch支持对集合所有元素进行匹配,下面的例子使用Powershell Switch语句演示打印水仙花数#
# $value=100..999
# switch($value)
# {
# {[Math]::Pow($_%10,3)+[Math]::Pow( [Math]::Truncate($_%100/10) ,3)+[Math]::Pow( [Math]::Truncate($_/100) , 3) -eq $_} {$_}
# }