Manchmal möchte man aber nicht den Umweg über die namentliche Adressierung gehen. Dann kommt ForEach-Object ins Spiel.
Wie bei Where-Object auch, wird ein Object zu ForEach-Object gepiped. Darauf folgt eine geschweifte Klammer. Und jedes Element in diesem Objekt, wir dann mittels $_ adressiert.
So zum Beispiel folgender Code:
$AllProcesses | ForEach-Object { Write-Host "Das ist der Prozess:" $_ Write-Host "-------------------------" }
Oder das zweite Beispiel:
$Table = @() ($AllProcesses | ? {$_.Name -ne "svchost"}) | ForEach-Object { $Line = "" | Select Name,PageMB $Line.Name = $_.Name $Line.PageMB = [math]::round($_.PagedSystemMemorySize / (1024 * 1024),2) $Table += $Line } $Table
Wobei einen keiner zwingen kann nicht doch einen anderen Weg einzuschlagen, je nach Bedarf… Hier habe ich z.B. $_ der Variablen $Process zugewiesen, wodurch ich es dann doch wie vorher verarbeiten konnte.
$Table = @() ($AllProcesses | ? {$_.Name -ne "svchost"}) | ForEach-Object { $Process = $_ $Line = "" | Select Name,PageMB $Line.Name = $Process.Name $Line.PageMB = [math]::round($Process.PagedSystemMemorySize / (1024 * 1024),2) $Table += $Line } $Table