PowerShell ForEach-Object
Example
Das Cmdlet ForEach-Object
funktioniert ähnlich wie die Anweisung foreach
, bezieht jedoch seine Eingabe aus der Pipeline.
Grundlegende Verwendung
$object | ForEach-Object { code_block}
Beispiel:
$names = @("Any","Bob","Celine","David")$names | ForEach-Object { "Hi, my name is $_!"}
Foreach-Object
hat zwei Standard-Aliase, foreach
und %
(Abkürzung Syntax). Am häufigsten ist %
da foreach
mit der foreach-Anweisung verwechselt werden kann. Beispiele:
$names | % { "Hi, my name is $_!"} $names | foreach { "Hi, my name is $_!"}
Erweiterte Verwendung
Foreach-Object
hebt sich von den alternativen foreach
-Lösungen ab, da es sich um ein Cmdlet handelt, das für die Verwendung der Pipeline ausgelegt ist. Aus diesem Grund werden drei Skriptblöcke wie ein Cmdlet oder eine erweiterte Funktion unterstützt:
- Begin: Wird einmal ausgeführt, bevor die Elemente durchlaufen werden, die aus der Pipeline eintreffen. Wird normalerweise verwendet, um Funktionen für die Verwendung in der Schleife zu erstellen, Variablen zu erstellen, Verbindungen (Datenbank, Web +) usw. zu öffnen.
- Prozess: Wird einmal pro Element ausgeführt, das aus der Pipeline stammt. „Normaler“ Foreach-Codeblock. Dies ist der Standardwert, der in den obigen Beispielen verwendet wird, wenn der Parameter nicht angegeben ist.
- End: Wird einmal ausgeführt, nachdem alle Elemente verarbeitet wurden. Wird normalerweise verwendet, um Verbindungen zu schließen, einen Bericht zu erstellen usw.
Beispiel:
"Any","Bob","Celine","David" | ForEach-Object -Begin { $results = @()} -Process { #Create and store message $results += "Hi, my name is $_!"} -End { #Count messages and output Write-Host "Total messages: $($results.Count)" $results}