繁体   English   中英

从一个 function 返回一个嵌套数组,作为参数传递给另一个 function

[英]return a nested array from one function, pass as argument to another function

我很生气,尽量不诉诸使用 $Global 变量来传递变量,我在这个论坛中看到了其他看似相同的“主题”,但在细节上我迷路了,或者他们似乎在做一些不同的事情 -或者我只是不明白问题或解决方案。

我从 func1 中的Get-WinEvent事件对象数组。 我想返回该数组并将其用作另一个 func2 的参数。 情况1

 $evtArray = Get-WinEvt -FilterHashtable @{ LogName=Application } #simplified for brevity
 return $evtArray  #not sure if working or not
 return ,$evtArray #not sure if working or not
 return @,$evtArray #not sure if working or not
}**```

```**function func2($evtArray) { #doesn't work
function func2( ,$evtArray ) #syntax error
function func2( ,($evtArray)) #syntax error
  ....further processing of the $evtArray occurs......**```

CASE#2 (may be the same as CASE#1 - not sure)
```**$array += ,(<date-time1>,[int],"string")
$array += ,(<date-time2>,[int],"string")**
....
Then pass $array as argument to a function
**func2($array)**

我在这上面花了几个小时,看到了十几个有前途的相同主题......

我建议你不要使用 return。 它结束了当前的 function,一般不需要。 要将 arguments 传递给 function,请不要用括号括起来。 arguments 应该用空格分隔,并且最好为参数命名,尽管这不是必需的。

$evtArray = Get-WinEvent -FilterHashtable @{ LogName='Application'; ID = 0}

Function func2($Array){
    $array.gettype()
}

func2 $evtArray

正如我之前所说,您不必命名参数,而是使用位置 arguments,但脚本/模块的最佳实践是使用全名。

func2 -Array $evtArray

Output 无论哪种方式调用都是

IsPublic IsSerial Name                                     BaseType                                                                                                                           
-------- -------- ----                                     --------                                                                                                                           
True     True     Object[]                                 System.Array

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM