Zum Hauptinhalt springen

Filter

Eine Funktion ist ein Skriptblock, bei dem Standardmäßig der End-Block ausgeführt wird, wenn Begin, Process und End-Blöcke nicht in der Funktion definiert wurden. Ein Filter verhält sich wie eine Funktion, führt aber nur den Process-Block aus, ist also quasi standardmäßig Pipeline-fähig. Der Filter unterstützt aber weder Begin-noch End-Block, und kann auch keine Parameter über die Pipeline annehmen. Stattdessen greift der Filter immer über die anonyme Variable $_ auf die Objekte der Pipeline zurück.

Filter Test-Filter
{
   $_.FullName
}
Get-ChildItem -Path C:\Windows | Test-Filter

Im Internet findet man einige ältere Blog-Einträge, die behaupten, dass ein Filter schneller wäre als eine Funktion. Das ist falsch, da ein Filter intern nichts anderes ist als eine Funktion, die standardmäßig den Process-Block ausführt.