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}