簡短描述
描述一個語言命令,您可以根據一或多個條件式測試的結果來執行語句清單。
完整描述
如果指定的條件式測試評估為 true,您可以使用 If 語句來執行程式代碼區塊。 如果所有先前的測試都評估為 false,您也可以指定一或多個額外的條件式測試來執行。 最後,您可以指定一個額外的代碼塊,如果沒有其他先前的條件測試計算結果為 true,則運行該代碼塊。
語法
下列範例顯示 If 語句語法:
if (<test1>)
{<statement list 1>}
[elseif (<test2>)
{<statement list 2>}]
[else
{<statement list 3>}]
當您執行 If 語句時,PowerShell 會將 <test1> 條件表達式評估為 true 或 false。 如果 <test1> 為 true,<statement list 1> 執行,且 PowerShell 會結束 If 語句。 如果 <test1> 為 false,PowerShell 會評估 <test2> 條件語句所指定的條件。
有關布爾值計算的更多資訊,請參閱 about_Booleans。
如果 <test2> 為 true,<statement list 2> 執行,且 PowerShell 會結束 If 語句。 如果兩者兼而有之, <test1> 則 AND <test2> EVALUATE 為 false, <statement list 3> 則代碼塊運行,並且 PowerShell 退出 If 語句。
您可以使用多個 Elseif 語句來鏈結一系列的條件式測試。 因此,僅當所有先前的測試均為 false 時,才會運行每個測試。 如果您需要建立包含許多 If 語句的 Elseif 語句,請考慮改用 Switch 語句。
範例:
最簡單的 If 語句包含單個命令,不包含任何 Elseif 語句或任何 Else 語句。 下列範例顯示最簡單的 If 語句形式:
if ($a -gt 2) {
Write-Host "The value $a is greater than 2."
}
在此示例中,如果 $a 變數大於 2,則條件的計算結果為 true,並且語句 list 將運行。 但是,如果 $a 小於或等於 2 或者不是現有變數,則該 If 語句不會顯示消息。
藉由新增 Else 語句,當$a小於或等於 2 時,就會顯示訊息。 下一個範例顯示:
if ($a -gt 2) {
Write-Host "The value $a is greater than 2."
}
else {
Write-Host ("The value $a is less than or equal to 2," +
" is not created or is not initialized.")
}
若要進一步優化此示例,可以使用 Elseif 語句在 $a 的值等於 2 時顯示一條消息。 下一個範例顯示:
if ($a -gt 2) {
Write-Host "The value $a is greater than 2."
}
elseif ($a -eq 2) {
Write-Host "The value $a is equal to 2."
}
else {
Write-Host ("The value $a is less than 2 or" +
" was not created or initialized.")
}
使用三元運算符語法
PowerShell 7.0 引進了使用三元運算符的新語法。 它會遵循 C# 三元運算符語法:
<condition> ? <if-true> : <if-false>
三元運算符的行為就像簡化的 if-else 語句。 系統會評估 <condition> 表示式,並將結果轉換成布爾值,以判斷下一個應該評估哪一個分支:
- 如果
<if-true>表示式為 true,則會執行<condition>表示式 - 如果
<if-false>表示式為 false,則會執行<condition>表示式
例如:
$message = (Test-Path $path) ? "Path exists" : "Path not found"
在這裡示例中,當返回 $true時Test-Path,值為 $message 「Path exists」 。 當返回 $false時Test-Path,的$message值為 「Path not found」。。
$service = Get-Service BITS
$service.Status -eq 'Running' ? (Stop-Service $service) : (Start-Service $service)
在此範例中,如果服務正在運行,則將其停止,如果其狀態不是 Running ,則表示已啟動。