- Windows Server 2012 Automation with PowerShell Cookbook
- Ed Goad
- 331字
- 2021-07-27 18:09:50
Piping data to functions
In addition to passing data to functions via parameters, functions can receive data directly from another object or command via a pipe "|". Receiving values by piping helps improve scripting by limiting the use of temporary variables, as well as more easily passing complex object types or descriptors.
How to do it...
In this recipe, we will create a simple function that receives input from command line as well as pipe. To do this, carry out the following steps:
- Create a simple function that accepts a parameter:
Function Square-Num { Param([float] $FirstNum) Write-Host ($FirstNum * $FirstNum) }
- Use the
ValueFromPipeline
parameter to enable the script to accept input from the pipeline:Function Square-Num { Param([float] [Parameter(ValueFromPipeline = $true)] $FirstNum ) Write-Host ($FirstNum * $FirstNum) }
- Test the function using parameters and by passing data from the pipeline:
How it works...
The script in the first step itself is simple—it creates a variable named $FirstNum
, squares it by multiplying the number against itself, and returns the result. In the second step we updated the parameter line with the following code:
[Parameter(ValueFromPipeline=$true)]
This parameter option allows the function to assign a value to $FirstNum
from the command line, as well as from the pipeline. PowerShell will first look for the value on the command line via name or location, and if it isn't listed, it will look for the value from the pipe.
There's more...
PowerShell will attempt to use all arguments provided to a function, and will report errors if there are unknown arguments. For instance, if we try to provide values from the pipeline and command line at the same time as shown in the following screenshot:

As you can see from the example, we attempt to pass both 8
and 7
to the Square-Num
function, the first via the pipe and the second via the command line. PowerShell reports an error, and then provides an answer of 49
, the result of 7 X 7.
- 機器學習實戰:基于Sophon平臺的機器學習理論與實踐
- 網上沖浪
- 網頁編程技術
- Learning Apache Spark 2
- 反饋系統:多學科視角(原書第2版)
- Learning Social Media Analytics with R
- Zabbix Network Monitoring(Second Edition)
- 21天學通Visual Basic
- 中國戰略性新興產業研究與發展·工業機器人
- Hands-On Data Warehousing with Azure Data Factory
- Mastering MongoDB 3.x
- Serverless Design Patterns and Best Practices
- 大型機系統應用基礎
- Generative Adversarial Networks Projects
- 小數據之美:精準捕捉未來的商業小趨勢