PowerShell 條件判斷和迴圈
對於多資料處理,條件判斷和迴圈是常用的。下面簡單列出基本用法。
比較運算子:
-eq :等於
-ne :不等於
-gt :大於
-ge :大於等於
-lt :小於
-le :小於等於
-contains :包含
-notcontains :不包含
布林運算子:
-and :和
-or :或
-xor :異或
-not :逆
!($var)
布林運算:
1 -eq 2
1,2,3,2 -contains 2
("A","B","C") -notcontains "D"
陣列運算:
1,2,3,2 -eq 2
1,2,3,2 -ne 2
1,2,3,2 -ge 2
Operator |
Conventional |
Description |
Example |
Result |
-eq, -ceq, -ieq |
= |
equals |
10 -eq 15 |
$false |
-ne, -cne, -ine |
<> |
not equal |
10 -ne 15 |
$true |
-gt, -cgt, -igt |
> |
greater than |
10 -gt 15 |
$false |
-ge, -cge, -ige |
>= |
greater than or equal to |
10 -ge 15 |
$false |
-lt, -clt, -ilt |
< |
less than |
10 -lt 15 |
$true |
-le, -cle, -ile |
<= |
less than or equal to |
10 -le 15 |
$true |
-contains, |
contains |
1,2,3 -contains 1 |
$true |
|
-notcontains, |
does not contain |
1,2,3 -notcontains 1 |
$false |
Operator |
Description |
Left Value |
Right Value |
Result |
-and |
Both conditions must be met |
True |
False |
False |
-or |
At least one of the two conditions must be met |
True |
False |
True |
-xor |
One or the other condition must be met, but not both |
True |
True |
False |
-not |
Reverses the result |
(not applicable) |
True |
False |
IF/ELSE 條件判斷語句:
$a=2
if($a -gt 1) {"$a 大於 1"}
if($a -gt 1) {"$a 大於 1"} else {"$a 小於 1"}
if($a -gt 1) {"$a 大於 1"} elseif ($a -lt 1){"$a 小於 1"} else {"1等於1"}
SWITCH 條件判斷語句:
#一般執行語法
$a=10
switch($a)
{
1 {"return 1"}
2 {"return 2"}
3 {"return 3"}
Default {"else return"}
}
#多個符合的條件都執行
$a=10
switch($a)
{
1 {"return 1"}
2 {"return 2"}
10 {"return 10"}
{$_ -gt 5 }{ "小於5" }
{$_ -lt 100 }{ "小於100" }
{($_ % 2) -eq 0}{ "餘2為0" }
Default {"else return"}
}
ForEach-Object 逐項處理資料:
#逐項輸出服務項
Get-Service | ForEach-Object{$_}
#逐項檢視服務中列 Name ,如包含“SQL”字串,則輸出服務中的列 DisplayName
Get-Service | ForEach-Object{if ($_.Name -like "*SQL*"){$_.DisplayName}}
#輸出當前目錄下最近一天更改過的檔案
Get-ChildItem | ForEach-Object{if ($_.LastWriteTime -gt (Get-Date).AddDays(-1)){$_}}
FOREACH 迴圈語句 :
$array=1..10
foreach ($n in $array){ $n }
foreach ($n in $array){ $sum+=$n } ; $sum
foreach($file in dir c:\windows)
{
if($file.Length -gt 1mb)
{
$File.Name
}
}
Do While 迴圈語句 / While 迴圈語句 / For 迴圈語句 :
#Do While 迴圈語句
$n=1
do { $sum2+=$n ; $n++ } while( $n -le 10); $sum2
#While 迴圈語句
$n=1
while($n -le 10){ $sum3+=$n ; $n++ } ; $sum3
#For 迴圈語句
for($n=1;$n -le 10;$n++){ $sum4+=$n } ; $sum4