如何在 PowerShell 中從 Foreach 物件退出
-
使用
break
條件退出 PowerShell 中的ForEach-Object
-
使用
if
和break
退出 PowerShell 中的ForEach-Object
-
使用
if
和return
退出 PowerShell 中的ForEach-Object
-
使用
if
和continue
退出 PowerShell 中的ForEach-Object
- 結論

ForEach-Object
Cmdlet 允許用戶遍歷集合並對每個輸入對象中的項目進行操作。在 ForEach-Object
中,輸入對象通過管道傳遞到 cmdlet 或使用 -InputObject
參數指定。
在 PowerShell 中構建 ForEach-Object
命令有兩種不同的方式:腳本塊
和 操作語句
。ForEach-Object
cmdlet 執行每個輸入對象的腳本塊或操作語句。
使用 腳本塊
來指定操作。$_
變數在腳本塊中用來表示當前輸入對象。
腳本塊
可以包含任何 PowerShell 腳本。例如,以下命令獲取每個 cmdlet 的 Name
屬性、函數和安裝在計算機上的 別名
的值。
Get-Command | ForEach-Object { $_.Name }
另一種構建 ForEach-Object
命令的方法是使用 操作
語句。您可以使用操作語句指定屬性值或調用方法。
Get-Command | ForEach-Object Name
有時,當您可能想要退出 ForEach-Object
時,情況會有所不同,因為它的工作原理與 ForEach
語句不同。在 ForEach-Object
中,當生成每個對象時,語句立即執行。
在 ForEach
語句中,所有對象在循環執行之前都會被收集。ForEach-Object
是一個 cmdlet,而不是一個實際的循環。
當您使用 break
或 continue
退出循環時,整個腳本會被終止,而不是跳過之後的語句。但是,在 PowerShell 中可以使用某些條件退出 ForEach-Object
對象。
使用 break
條件退出 PowerShell 中的 ForEach-Object
在 PowerShell 中,foreach-object
循環通常用於遍歷集合或管道中的每個項目。有時,根據某些條件需要提前退出這個循環。
break
語句提供了一種直接的方法,當滿足特定條件時立即終止循環。
$numbers = "one", "two", "three", "four", "five"
$Break = $False;
$numbers | Where-Object { $Break -eq $False } | ForEach-Object {
$Break = $_ -eq "three";
Write-Host "The number is $_.";
}
在這段代碼中,我們初始化了一個包含表示數字的字符串的數組 $numbers
。我們還將 $Break
初始設置為 $False
。
在 foreach-object
循環中,我們使用 Where-Object
根據 $Break
變數過濾項目。如果 $Break
為 $False
,則循環繼續;否則,停止。
在循環內部,我們檢查當前項目是否等於 three
。如果是,我們將 $Break
設置為 $True
,導致循環終止。
輸出:
使用 if
和 break
退出 PowerShell 中的 ForEach-Object
有時,根據特定條件需要提前退出這個循環。if
方法提供了一種直接的方法,通過在循環內部評估條件並在滿足條件時觸發退出來實現此任務。
在這種方法中,您需要在對象的集合中使用 empty
值以退出 PowerShell 的 ForEach-Object
。例如,您可以使用 if
條件退出 ForEach-Object
。
$numbers = "one", "two", "three", "", "four"
$numbers | ForEach-Object {
if ($_ -eq "") {
break;
}
Write-Host "The number is $_."
}
在提供的代碼片段中,我們初始化了一個包含表示數字的字符串的數組 $numbers
。在 foreach-object
循環中,我們遍歷數組中的每個項目。
使用 if
語句,我們檢查當前項目 $_
是否為空字符串。如果條件評估為真,我們使用 break
立即退出循環。
否則,循環繼續,我們使用 Write-Host
輸出當前數字。
輸出:
使用 if
和 return
退出 PowerShell 中的 ForEach-Object
使用 if
和 return
方法退出 PowerShell 中的 foreach-object
循環可以根據特定條件提前終止循環。當需要停止循環執行並在滿足某些條件時將控制權返回給調用者時,此方法特別有用。
在循環內部,使用 if
語句來評估退出循環的條件。如果條件評估為真,則執行 return
語句,立即結束循環執行並將控制權返回給調用者。
$numbers = "one", "two", "three", "four", "five"
$numbers | ForEach-Object {
if ($_ -eq "three") {
return
}
Write-Host "The number is $_."
}
在提供的代碼片段中,我們初始化了一個包含表示數字的字符串的數組 $numbers
。在 foreach-object
循環中,我們遍歷數組中的每個項目。
使用 if
語句,我們檢查當前項目 $_
是否等於 three
。如果條件評估為真,我們使用 return
立即退出循環。
否則,循環繼續,我們使用 Write-Host
輸出當前數字。
輸出:
使用 if
和 continue
退出 PowerShell 中的 ForEach-Object
在 PowerShell 中,continue
語句用於跳過循環當前迭代的其餘部分,並轉向下一次迭代。雖然主要用於循環中以跳過特定迭代,但 continue
還可以用來在 foreach-object
循環中實現一種形式的循環退出。
通過在循環內部有策略地放置 continue
語句並納入條件邏輯,您可以根據特定條件提前終止循環。
$numbers = 1..10
$numbers | ForEach-Object {
if ($_ -eq 5) {
continue
}
Write-Host "Number: $_"
}
在提供的代碼示例中,我們初始化了一個包含從 1 到 10 的數字的數組 $numbers
。在 foreach-object
循環中,我們遍歷數組中的每個數字。
使用 if
語句,我們檢查當前數字是否等於 5。如果條件評估為真,則執行 continue
語句,導致循環跳過當前迭代並進入下一次迭代。
這有效地在滿足指定條件時提前終止了循環。
輸出:
結論
總結來說,PowerShell 中的 ForEach-Object
cmdlet 促進了對集合的迭代,允許對每個項目進行單獨操作。我們探討了幾種方法來提前退出 ForEach-Object
循環,包括使用 break
、return
和 continue
。
雖然 break
和 continue
提供了循環內的直接控制流,但 return
提供了一種替代方法來退出循環並返回給調用者。每種方法都有其自己的用例和優點,為腳本執行提供了靈活性。
未來,使用者可以通過在不同場景中實驗這些方法,加深他們的理解,探索它們的細微差別,並掌握它們在 PowerShell 腳本中的應用。