ForEach-Object - PowerShell Befehl Hilfe und Beispiele

Führt einen Vorgang für die einzelnen Eingabeobjekte einer Gruppe von Eingabeobjekten aus. (ForEach-Object)


NAME
ForEach-Object
ÜBERSICHT
Führt einen Vorgang für die einzelnen Eingabeobjekte einer Gruppe von Eingabeobjekten aus.
SYNTAX
ForEach-Object [-Process] <ScriptBlock[]> [-Begin <scriptblock>] [-End <scriptblock>] [-InputObject <psobject>] [<CommonParameters>]
BESCHREIBUNG
Das Cmdlet "ForEach-Object" führt einen Vorgang für die einzelnen Eingabeobjekte einer Gruppe von Eingabeobjekten aus. Die Eingabeobjekte können über die Pipeline an das Cmdlet übergeben oder mit dem InputObject-Parameter angegeben werden. Der auszuführende Vorgang wird in einem Skriptblock beschrieben, der für das Cmdlet als Wert des Process-Parameters bereitgestellt wird. Der Skriptblock kann ein beliebiges Windows PowerShell-Skript enthalten. Innerhalb des Skriptblocks wird das aktuelle Eingabeobjekt durch die Variable "$_" dargestellt. Zusätzlich zu dem Skriptblock, der die für die einzelnen Eingabeobjekte auszuführenden Vorgänge beschreibt, können Sie zwei weitere Skriptblöcke angeben. Ein Skriptblock, der als Wert des Begin-Parameters angegeben wird, wird vor der Verarbeitung des ersten Eingabeobjekts ausgeführt. Der andere wird als Wert des End-Parameters angegeben und nach der Verarbeitung des letzten Eingabeobjekts ausgeführt. Die Ergebnisse der Auswertung sämtlicher Skriptblöcke, einschließlich der mit "Begin" und "End" angegebenen, werden über die Pipeline übergeben.
PARAMETER
-Begin <scriptblock> Gibt einen Skriptblock an, der vor dem Verarbeiten von Eingabeobjekten ausgeführt werden soll. Erforderlich? false Position? named Standardwert Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false -End <scriptblock> Gibt einen Skriptblock an, der nach dem Verarbeiten aller Eingabeobjekte ausgeführt werden soll. Erforderlich? false Position? named Standardwert Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false -InputObject <psobject> Akzeptiert ein Objekt, für das der im Process-Parameter angegebene Skriptblock einen Vorgang ausführt. Geben Sie eine Variable ein, die die Objekte enthält, oder geben Sie einen Befehl oder einen Ausdruck ein, mit dem die Objekte abgerufen werden. Erforderlich? false Position? named Standardwert Pipelineeingaben akzeptieren?true (ByValue) Platzhalterzeichen akzeptieren?false -Process <ScriptBlock[]> Gibt den Skriptblock an, der auf die einzelnen eingehenden Objekte angewendet wird. Erforderlich? true Position? 1 Standardwert Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false <CommonParameters> Dieses Cmdlet unterstützt folgende allgemeine Parameter: "Verbose", "Debug", "ErrorAction", "ErrorVariable", "WarningAction", "WarningVariable", "OutBuffer" und "OutVariable". Weitere Informationen erhalten Sie mit dem Befehl "get-help about_commonparameters".
EINGABEN
System.Management.Automation.PSObject Sie können jedes Objekt über die Pipeline an ForEach-Object übergeben.
AUSGABEN
System.Management.Automation.PSObject Welche Objekte ForEach-Object zurückgibt, hängt von der Eingabe ab.
HINWEISE

Beispiele

BEISPIEL 1
C:\PS>30000,56798,12432 | foreach-object -process {$_/1024} Beschreibung ----------- Dieser Befehl akzeptiert ein Array von ganzen Zahlen, teilt jede davon durch 1024 und zeigt die Ergebnisse an.
BEISPIEL 2
C:\PS>get-childitem C:\ | foreach-object -process { $_.length / 1024 } Beschreibung ----------- Mit diesem Befehl werden die Dateien und Verzeichnisse im Stamm des Laufwerks "C:" abgerufen, und deren jeweilige Größe wird abgerufen und angezeigt. Die Nullen stellen Verzeichnisse dar, deren Dateigröße nicht verfügbar ist.
BEISPIEL 3
C:\PS>$events = get-eventlog -logname system -newest 1000 C:\PS> $events | foreach-object -begin {get-date} -process {out-file -filepath events.txt -append -inputobject $_.message} -end {get-date} Beschreibung ----------- Mit diesem Befehl werden die 1000 letzten Ereignisse aus dem Systemprotokoll abgerufen und in der Variablen "$events" gespeichert. Anschließend werden die Ereignisse über die Pipeline an das Cmdlet "ForEach-Object" übergeben. Der Begin-Parameter zeigt das aktuelle Datum und die aktuelle Uhrzeit an. Anschließend erstellt der Process-Parameter mit dem Cmdlet "Out-File" eine Textdatei mit dem Namen "events.txt" und speichert die Message-Eigenschaft der einzelnen Ereignisse in dieser Datei. Schließlich werden nach Abschluss der gesamten Verarbeitung mit dem End-Parameter das Datum und die Uhrzeit angezeigt.
BEISPIEL 4
C:\PS>get-itemproperty -path hkcu:\Network\* | foreach-object {set-itemproperty -path $_.pspath -name RemotePath -value $_.RemotePath.ToUpper();} Beschreibung ----------- Dieser Befehl ändert den Wert des Registrierungseintrags "RemotePath" in allen Unterschlüsseln unter dem Schlüssel "HKCU:\Network" in Großbuchstaben. Mit diesem Format kann Form oder Inhalt von Werten in der Registrierung geändert werden. Jeder Unterschlüssel im Schlüssel "Network" stellt ein zugeordnetes Netzlaufwerk dar, für das bei der Anmeldung erneut eine Verbindung hergestellt wird. Der RemotePath-Eintrag enthält den UNC-Pfad des verbundenen Laufwerks. Wenn Sie \\Server\Share beispielsweise das Laufwerk "E:" zuordnen, weist "HKCU:\Network" einen Unterschlüssel für das Laufwerk "E:" auf, und der Wert des Registrierungseintrags "RemotePath" im Unterschlüssel von "E:" lautet "\\Server\Share". Mit dem Cmdlet "Get-ItemProperty" werden vom Befehl alle Unterschlüssel des Schlüssels "Network" abgerufen, und mit dem Cmdlet "Set-ItemProperty" wird der Wert des Registrierungseintrags "RemotePath" in den einzelnen Schlüsseln geändert. Im Befehl "Set-ItemProperty" entspricht der Pfad dem Wert der Eigenschaft "PSPath" des Registrierungsschlüssels. (Dies ist eine Eigenschaft des Microsoft .NET Framework-Objekts, das den Registrierungsschlüssel darstellt; es handelt sich nicht um einen Registrierungseintrag.) Der Befehl verwendet die ToUpper()-Methode des RemotePath-Werts. Dabei handelt es sich um eine Zeichenfolge (REG_SZ). Da Set-ItemProperty die Eigenschaft aller Schlüssel ändert, ist das Cmdlet "ForEach-Object" erforderlich, um auf die Eigenschaft zuzugreifen. VERWANDTE LINKS Online version: http://go.microsoft.com/fwlink/?LinkID=113300 (möglicherweise auf Englisch) C:\Windows>powershell get-help Where-Object -full

Microsoft Windows [Version 10.0.19045.3693]
Copyright (c) 2023 Microsoft Corporation.

ColorConsole [Version 3.7.1000] PowerShell 2.0-Export

Windows 11, 10, 8.1, 8, 7 / Server 2022, 2019, 2016











Windows-10


... Windows 10 FAQ
... Windows 10 How To


Windows 10 How To


... Windows 11 How To
... Windows 10 FAQ



PowerShell: Führt einen Vorgang für die einzelnen Eingabeobjekte einer Gruppe von Eingabeobjekten aus.

HTTP: ... PS_Windows/de/ForEach-Object.htm
0.046
18580

Synchronisieren klappt nicht auf Windows 10 / 11 , die Lösung!

Die Tastatur reagiert nicht, bzw. falsch unter Windows 11, 10, 8.1, ...!

Der Cursor in Text-Verarbeitung ist zu breit unter Windows 10//11, warum?

Muss ich immer mit aktiviertem Defender unter Win-10 arbeiten!

Windows 10/11 Netzwerkadapter fehlen, wo kann ich sie finden?

Windows 10/11 Zwischenablage Verlauf öffnen und verwenden!



(0)