如何在 PowerShell 中從 Foreach 物件退出

  1. 使用 break 條件退出 PowerShell 中的 ForEach-Object
  2. 使用 ifbreak 退出 PowerShell 中的 ForEach-Object
  3. 使用 ifreturn 退出 PowerShell 中的 ForEach-Object
  4. 使用 ifcontinue 退出 PowerShell 中的 ForEach-Object
  5. 結論
如何在 PowerShell 中從 Foreach 物件退出

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,而不是一個實際的循環。

當您使用 breakcontinue 退出循環時,整個腳本會被終止,而不是跳過之後的語句。但是,在 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,導致循環終止。

輸出:

在 PowerShell 中從 foreach 物件中退出 - 輸出 1

使用 ifbreak 退出 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 輸出當前數字。

輸出:

在 PowerShell 中從 foreach 物件中退出 - 輸出 2

使用 ifreturn 退出 PowerShell 中的 ForEach-Object

使用 ifreturn 方法退出 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 輸出當前數字。

輸出:

在 PowerShell 中從 foreach 物件退出 - 輸出 3

使用 ifcontinue 退出 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 物件退出 - 輸出 4

結論

總結來說,PowerShell 中的 ForEach-Object cmdlet 促進了對集合的迭代,允許對每個項目進行單獨操作。我們探討了幾種方法來提前退出 ForEach-Object 循環,包括使用 breakreturncontinue

雖然 breakcontinue 提供了循環內的直接控制流,但 return 提供了一種替代方法來退出循環並返回給調用者。每種方法都有其自己的用例和優點,為腳本執行提供了靈活性。

未來,使用者可以通過在不同場景中實驗這些方法,加深他們的理解,探索它們的細微差別,並掌握它們在 PowerShell 腳本中的應用。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Rohan Timalsina
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

相關文章 - PowerShell Object