Pipeline input
Using the Parameter attribute to set either ValueFromPipeline or ValueFromPipelineByPropertyName sets a parameter up to fill from the input pipeline.
The pipeline is a complex topic and requires a background in the use of named blocks. Named blocks, along with a broader set of examples for pipeline usage, were discussed in Chapter 17, Scripts, Functions, and Script Blocks.
About ValueFromPipeline
ValueFromPipeline allows the entire object to be passed into a parameter from an input pipeline. The following function implements an InputObject parameter, which accepts a pipeline input by using the ValueFromPipeline property of the Parameter attribute:
function Get-InputObject {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory, ValueFromPipeline)]
        $InputObject
    )
    process {
        'Input object was of type {0}' -f @(
            $InputObject.GetType().FullName
        )
    }
}
    Remember that values read from an...