在 PowerShell 中退出 Foreach 物件

Rohan Timalsina 2023年1月30日
  1. 使用 break 條件從 PowerShell 中的 ForEach-Object 退出
  2. 使用 if 從 PowerShell 中的 ForEach-Object 退出
在 PowerShell 中退出 Foreach 物件

ForEach-Object cmdlet 允許使用者遍歷集合並對輸入物件集合中的每個專案進行操作。在 ForEach-Object 中,輸入物件通過管道傳送到 cmdlet 或使用 -InputObject 引數指定。

在 PowerShell 中構造 ForEach-Object 命令有兩種不同的方法:指令碼塊操作語句ForEach-Object cmdlet 執行每個輸入物件的指令碼塊或操作語句。

使用指令碼塊來指定操作。 $_ 變數在指令碼塊中用於表示當前輸入物件。

script block 可以包含任何 PowerShell 指令碼。例如,以下命令獲取計算機上安裝的每個 cmdlet 的 Name 屬性、函式和 aliases 的值。

Get-Command | ForEach-Object {$_.Name}

構造 ForEach-Object 命令的另一種方法是使用 operation 語句。你可以使用操作語句指定屬性值或呼叫方法。

Get-Command | ForEach-Object Name

有時,在某些情況下,你可能想要退出 ForEach-Object,但它的工作方式與 ForEach 語句不同。在 ForEach-Object 中,一旦生成每個物件,就會執行該語句。

ForEach 語句中,在迴圈執行之前收集所有物件。ForEach-Object 是一個 cmdlet,而不是實際的迴圈。

當你使用 breakcontinue 退出迴圈時,整個指令碼將終止,而不是跳過它後面的語句。但是,可以使用 PowerShell 中的某些條件退出 ForEach-Object 物件。

使用 break 條件從 PowerShell 中的 ForEach-Object 退出

我們建立了一個物件集合 $numbers 用作 ForEach-Object 中的輸入物件。

$numbers = "one","two","three","four","five"

Where-Object cmdlet 允許你根據屬性值從集合中選擇物件。你可以先在 Where-Object 中應用退出邏輯,然後將物件傳遞給 ForEach-Object

然後使用如下所示的 break 條件從 PowerShell 中的 ForEach-Object 退出。

$Break = $False;

$numbers | Where-Object { $Break -eq $False } | ForEach-Object {

    $Break = $_ -eq "three";

    Write-Host "The number is $_.";
}

當物件值等於 three 時,ForEach-Object 將跳過對物件集合的迭代。因此,我們將退出 PowerShell 中的 ForEach-Object

輸出:

The number is one.
The number is two.
The number is three.

使用 if 從 PowerShell 中的 ForEach-Object 退出

在此方法中,你需要在物件集合中使用 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 條件,它表明物件的值是否等於 null,然後打破 ForEach-Object 語句。

輸出:

The number is one.
The number is two.
The number is three.

正如我們所看到的,程式的輸出最多列印到 。物件集合中有一個空值。

該程式在它之後終止。這樣,我們就可以得到結果並退出 ForEach-Object

作者: 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