The pipeline is a magic thing for Shell, and it greatly improves the programming capability on the command line. Understanding and mastering the use of pipelines is an essential step for PowerShell masters. Without pipelines, we have to use many variables to save intermediate results. Although this is a common trick for scripts and other compiled languages, for Shell fighting on the command line, it is a very painful thing.
MPs Queue Model
As the name suggests, a pipe connects things to form a channel. On the surface, pipelines are a string of commands connected by pipeline symbols |. In terms of functions, the pipeline is like a pipeline, which transmits the result of the previous processing to the next processing as the input. Commands connected by pipelines are executed from left to right, and the results are output to the console. In the past, pipeline streams were transmitted using strings or expressions that can be formatted as strings. Pipeline streams of PowerShell can transmit objects.
How does the pipeline work in PowerShell?
PowerShell pipeline, which can pass objects, is a huge improvement. At this time, the pipeline has the taste of function call. If the caller can pass complex objects, the receiver must match the object type, and an error occurs when an incorrect matching command is executed. But there are exceptions here. The PowerShell pipeline can be passed not only by the entire object, but also by the attribute name. This feature greatly improves the availability and processing capability of the pipeline. This allows us to use pipelines to pass partial attributes of objects even if the types do not match.
Pipeline example
In PowerShell, there are some commands specially designed for pipelines, such as get-member, sort, and measure. Some commands, although not specifically designed for pipelines, are brilliant in the pipeline. The following are some of the most common commands:
Select
Using the select command in the pipeline is as common as using dir in Cmd. You can write out the most commonly used select method without looking at the detailed syntax of the select command. As follows:
dir | select name,LastWriteTime
This command displays the names and last modification dates of files and subfolders in the current folder.
Where
Which of the following can be abbreviated ?, Example:
dir | ? {$_.mode –like “d*”} | select name,LastWriteTime
This command only displays the subfolders of the current folder, not the files.
Foreach
Foreach can process each passed object, which can be abbreviated as '% '. Example:
dir | ? {$_.mode -notlike "d*"} | % {echo "The size of file '$($_.name)' is $_.Length"}
The result of this command is output information similar to "The size of file 'myscript. ps1' is 1520". Each file has a row.
Conclusion
Pipeline has many advantages, which cannot be completed in this small space. After going on to the road, you will know the highlights of the pipeline.