支持全部的Powershell版本:
当你创建一个Powershell函数,这里有个样板定义了一个输入参数它能通过参数或管道符接收多个值:
function Get-Something { param ( [Parameter(Mandatory=$true,ValueFromPipeline=$true)] [Object[]] $InputObject ) process { $InputObject | ForEach-Object { $element = $_ "processing $element" } } }
同时这里是函数的动作:
PS> Get-Something -InputObject 1,2,3,4 processing 1 processing 2 processing 3 processing 4 PS> 1,2,3,4 | Get-Something processing 1 processing 2 processing 3 processing 4
注意怎么将参数定义成数组一样(这样能接收多个参数值)。接下来的代码,参数中值通过使用ForEach-Object去处理每个独特元素。其中用逗号分割多个值与第一个命令例子意思差不多。
要通过管道接收多个值,请确保你从管道传入的参数,接着,添加一个Process脚本块到你的函数。它作为一个循环,它类似于ForEach-Object去处理每个管道对象。
原文地址: Accepting Multiple Input
本文链接: https://www.pstips.net/accepting-multiple-input.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请问怎么处理二维数组?
比如
Get-Something (1,(2,3,4),5)
“————–”
(1,(2,3,4),5) | Get-Something
最后输出会变成
processing 1
processing 2 3 4
processing 5
————–
processing 1
processing 2
processing 3
processing 4
processing 5
这样的输出是合理的。(1,(2,3,4),5)是一个三个元素的数组,只不过中间的元素又是一个数组,PowerShell在转换成字符串中默认使用了类似于[string]::Join(” ” , @(2,3,4))
二维数组仍然是一个参数,只是你拿到参数的值,可以做更多自己处理。可以参考:[算法]PowerShell打印旋转矩阵