I ran across some Powershell code using the filter
command. I've never seen this command, but it works basically like this:
It seems to behave as a function. If I run Get-Command filter
I get back The term 'filter' is not recognized as the name of a cmdlet, function, script file, or operable program.
and Get-Alias filter
also returns a similar message. Get-Help filter
just returns Cmdlets and Functions with the word Filter somewhere. If I Google for "Powershell filter command", I just get a bunch of stuff about various commands with -Filter
arguments and Where-Object
syntax.
What is this command and what is it used for? Is there documentation on it somewhere? Thanks!
In short, a filter is a function only able to use the process-block. Based on that in can be used to manipulate (filter, modify...) pipeline objects. They also allow you to e. g. deliver pre defined filter function with a module, saving you the work of writing complicated Where-Objects
script blocks 100 of times.
about functions
Filters
A filter is a type of function that runs on each object in the pipeline. A filter resembles a function with all its statements in a Process block. The following filter takes log entries from the pipeline and then displays either the whole entry or only the message portion of the entry:
filter Get-ErrorLog ([switch]$message)
{
if ($message) { Out-Host -InputObject $_.Message }
else { $_ }
}
This link offers good explanation about including some examples.
Hope that helps.
A filter
definition is syntactic sugar that makes it easier to create parameter-less function
s whose sole purpose is to process input from the pipeline, (the latter being represented by the automatic $_
variable), but without the need to explicitly declare a process
block that ensures per-input-object invocation.
That is, for example:
filter Add-One { 1 + $_ }
is syntactic sugar for:
function Add-One { process { 1 + $_ } }
With either definition, the following sample command:
1, 2 | Add-One
would yield:
2
3
Perhaps because of their limitations - no (easy) support for parameters, no support for invocation with -?
, ... - and the limited syntactic convenience they afford, filter
s aren't widely used.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With