簡體   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