Wie man aus einem Foreach-Objekt in PowerShell aussteigt
-
Verwenden Sie die
break
-Bedingung, um ausForEach-Object
in PowerShell auszutreten -
Verwenden Sie
if
undbreak
, um ausForEach-Object
in PowerShell auszutreten -
Verwenden Sie
if
undreturn
, um ausForEach-Object
in PowerShell auszutreten -
Verwenden Sie
if
undcontinue
, um ausForEach-Object
in PowerShell auszutreten - Fazit

Das ForEach-Object
Cmdlet ermöglicht es dem Benutzer, durch Sammlungen zu iterieren und gegen jedes Element in einer Sammlung von Eingabeobjekten zu agieren. In ForEach-Object
werden die Eingabeobjekte an das Cmdlet weitergeleitet oder mit dem Parameter -InputObject
angegeben.
Es gibt zwei verschiedene Möglichkeiten, einen ForEach-Object
Befehl in PowerShell zu konstruieren: Skriptblock
und Betriebserklärung
. Das ForEach-Object
Cmdlet führt den Skriptblock oder die Betriebserklärung jedes Eingabeobjekts aus.
Verwenden Sie einen Skriptblock
, um die Operation anzugeben. Die Variable $_
wird innerhalb des Skriptblocks verwendet, um das aktuelle Eingabeobjekt darzustellen.
Der Skriptblock
kann beliebigen PowerShell-Skript enthalten. Zum Beispiel ruft der folgende Befehl den Wert der Name
-Eigenschaft jedes Cmdlets, Funktionen und der auf dem Computer installierten Aliase
ab.
Get-Command | ForEach-Object { $_.Name }
Eine andere Möglichkeit, den ForEach-Object
Befehl zu konstruieren, besteht darin, die Betriebserklärung
zu verwenden. Sie können einen Eigenschaftenwert angeben oder eine Methode mit der Betriebserklärung aufrufen.
Get-Command | ForEach-Object Name
Manchmal gibt es Situationen, in denen Sie aus dem ForEach-Object
aussteigen möchten, aber es funktioniert anders als die ForEach
-Anweisung. In ForEach-Object
wird die Anweisung ausgeführt, sobald jedes Objekt produziert wird.
In der ForEach
-Anweisung werden alle Objekte gesammelt, bevor die Schleife ausgeführt wird. Der ForEach-Object
ist ein Cmdlet und keine tatsächliche Schleife.
Wenn Sie break
oder continue
verwenden, um die Schleife zu verlassen, wird das gesamte Skript beendet, anstatt die nachfolgende Anweisung zu überspringen. Es ist jedoch möglich, aus dem ForEach-Object
Objekt unter Verwendung bestimmter Bedingungen in PowerShell auszusteigen.
Verwenden Sie die break
-Bedingung, um aus ForEach-Object
in PowerShell auszutreten
In PowerShell wird die foreach-object
Schleife häufig verwendet, um über jedes Element in einer Sammlung oder Pipeline zu iterieren. Gelegentlich entsteht die Notwendigkeit, diese Schleife vorzeitig basierend auf bestimmten Bedingungen zu verlassen.
Die break
-Anweisung bietet eine unkomplizierte Möglichkeit, dies zu erreichen, indem sie die Schleife sofort beendet, wenn eine bestimmte Bedingung erfüllt ist.
$numbers = "one", "two", "three", "four", "five"
$Break = $False;
$numbers | Where-Object { $Break -eq $False } | ForEach-Object {
$Break = $_ -eq "three";
Write-Host "The number is $_.";
}
In diesem Code-Snippet initialisieren wir ein Array $numbers
, das Strings enthält, die Zahlen darstellen. Wir setzen $Break
zunächst auf $False
.
Innerhalb der foreach-object
Schleife verwenden wir Where-Object
, um Elemente basierend auf der $Break
-Variable zu filtern. Wenn $Break
$False
ist, setzt sich die Schleife fort; andernfalls stoppt sie.
Innerhalb der Schleife überprüfen wir, ob das aktuelle Element gleich three
ist. Wenn ja, setzen wir $Break
auf $True
, was die Schleife beendet.
Ausgabe:
Verwenden Sie if
und break
, um aus ForEach-Object
in PowerShell auszutreten
Manchmal besteht die Notwendigkeit, diese Schleife vorzeitig basierend auf bestimmten Bedingungen zu verlassen. Die if
-Methode bietet einen unkomplizierten Ansatz zum Erreichen dieser Aufgabe, indem sie eine Bedingung innerhalb der Schleife bewertet und einen Ausstieg auslöst, wenn die Bedingung erfüllt ist.
In dieser Methode müssen Sie einen leeren
Wert in einer Sammlung von Objekten verwenden, um aus ForEach-Object
in PowerShell auszutreten. Zum Beispiel können Sie die if
-Bedingung verwenden, um aus ForEach-Object
auszutreten.
$numbers = "one", "two", "three", "", "four"
$numbers | ForEach-Object {
if ($_ -eq "") {
break;
}
Write-Host "The number is $_."
}
Im bereitgestellten Code-Snippet initialisieren wir ein Array $numbers
, das Strings enthält, die Zahlen darstellen. Innerhalb der foreach-object
Schleife iterieren wir über jedes Element im Array.
Mit der if
-Anweisung prüfen wir, ob das aktuelle Element $_
ein leerer String ist. Wenn die Bedingung als wahr bewertet wird, verwenden wir break
, um sofort aus der Schleife auszutreten.
Andernfalls setzt sich die Schleife fort und wir geben die aktuelle Zahl mit Write-Host
aus.
Ausgabe:
Verwenden Sie if
und return
, um aus ForEach-Object
in PowerShell auszutreten
Das Verlassen einer foreach-object
Schleife in PowerShell unter Verwendung der Kombination aus if
und return
ermöglicht die vorzeitige Beendigung der Schleife basierend auf bestimmten Bedingungen. Diese Methode ist besonders nützlich, wenn Sie die Ausführung der Schleife anhalten und die Kontrolle an den Aufrufer zurückgeben müssen, wenn eine bestimmte Bedingung erfüllt ist.
Innerhalb der Schleife wird eine if
-Anweisung verwendet, um die Bedingung für das Verlassen der Schleife zu bewerten. Wenn die Bedingung als wahr bewertet wird, wird die return
-Anweisung ausgeführt, die die Ausführung der Schleife sofort beendet und die Kontrolle an den Aufrufer zurückgibt.
$numbers = "one", "two", "three", "four", "five"
$numbers | ForEach-Object {
if ($_ -eq "three") {
return
}
Write-Host "The number is $_."
}
Im bereitgestellten Code-Snippet initialisieren wir ein Array $numbers
, das Strings enthält, die Zahlen darstellen. Innerhalb der foreach-object
Schleife iterieren wir über jedes Element im Array.
Mit der if
-Anweisung prüfen wir, ob das aktuelle Element $_
gleich three
ist. Wenn die Bedingung als wahr bewertet wird, verwenden wir return
, um sofort aus der Schleife auszutreten.
Andernfalls setzt sich die Schleife fort und wir geben die aktuelle Zahl mit Write-Host
aus.
Ausgabe:
Verwenden Sie if
und continue
, um aus ForEach-Object
in PowerShell auszutreten
In PowerShell wird die continue
-Anweisung verwendet, um den Rest der aktuellen Iteration einer Schleife zu überspringen und zur nächsten Iteration überzugehen. Während sie hauptsächlich in Schleifen verwendet wird, um spezifische Iterationen zu überspringen, kann continue
auch verwendet werden, um eine Art von Schleifenausgang innerhalb einer foreach-object
Schleife zu implementieren.
Durch strategisches Platzieren der continue
-Anweisung innerhalb der Schleife und Einbeziehung bedingter Logik können Sie eine vorzeitige Beendigung der Schleife basierend auf bestimmten Bedingungen erreichen.
$numbers = 1..10
$numbers | ForEach-Object {
if ($_ -eq 5) {
continue
}
Write-Host "Number: $_"
}
Im bereitgestellten Codebeispiel initialisieren wir ein Array $numbers
, das Zahlen von 1 bis 10 enthält. Innerhalb der foreach-object
Schleife iterieren wir über jede Zahl im Array.
Mit der if
-Anweisung prüfen wir, ob die aktuelle Zahl gleich 5 ist. Wenn die Bedingung als wahr bewertet wird, wird die continue
-Anweisung ausgeführt, was dazu führt, dass die Schleife die aktuelle Iteration überspringt und zur nächsten übergeht.
Dies erreicht effektiv die vorzeitige Beendigung der Schleife, wenn die angegebene Bedingung erfüllt ist.
Ausgabe:
Fazit
Zusammenfassend lässt sich sagen, dass das ForEach-Object
Cmdlet in PowerShell die Iteration durch Sammlungen erleichtert und Operationen an jedem Element einzeln zulässt. Wir haben verschiedene Methoden untersucht, um vorzeitig aus einer ForEach-Object
Schleife auszutreten, einschließlich der Verwendung von break
, return
und continue
.
Während break
und continue
direkte Kontrollflüsse innerhalb der Schleife bieten, bietet return
einen alternativen Ansatz, um die Schleife zu verlassen und zum Aufrufer zurückzukehren. Jede Methode hat ihre eigenen Anwendungsfälle und Vorteile und bietet Flexibilität bei der Skriptausführung.
Zukünftig können Benutzer ihr Verständnis vertiefen, indem sie mit diesen Methoden in verschiedenen Szenarien experimentieren, ihre Nuancen erkunden und ihre Anwendung in PowerShell-Skripten meistern.