官术网_书友最值得收藏!

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:

  1. Create a simple function that accepts a parameter:
    Function Square-Num
    {
        Param([float] $FirstNum)
        Write-Host ($FirstNum * $FirstNum)
    }
  2. 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)
    } 
  3. Test the function using parameters and by passing data from the pipeline:
    How to do it...

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:

There's more...

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.

主站蜘蛛池模板: 壤塘县| 启东市| 嘉禾县| 增城市| 渭南市| 临漳县| 天镇县| 松江区| 内江市| 延津县| 溆浦县| 彭州市| 萨迦县| 府谷县| 邢台市| 永靖县| 廊坊市| 镇赉县| 邮箱| 墨竹工卡县| 阜城县| 吐鲁番市| 克拉玛依市| 通州区| 平果县| 松溪县| 修武县| 徐汇区| 育儿| 安康市| 西乌珠穆沁旗| 临猗县| 巧家县| 白山市| 西和县| 如皋市| 武穴市| 玉田县| 孟州市| 溆浦县| 元谋县|