簡體   English   中英

Powershell參數傳遞給函數看似不起作用

[英]Powershell argument passing to function seemingly not working

我覺得我做的事情很傻,但問題在於:

Function getPropertyOfFile($a, $b, $c)
{
    $a.GetDetailsOf($b, $c)
}

如果我傳遞適合該函數的$ a,$ b,$ c變量,它就會失敗

“方法調用失敗,因為[System.Object []]不包含名為'GetDetailsOf'的方法。”

但是,如果我直接用我傳遞的參數替換$ a,$ b,$ c,然后嘗試運行它,它運行正常。

到底他媽發生了什么?

注意:我正在使用PowerShell ISE,並通過將其復制/粘貼到控制台中來將函數輸入到powershell。 我也一直在假設如果我輸入一個具有相同名稱的新函數,它將覆蓋。 是否有更好的方法來從.ps1中讀取PS?

編輯:我試圖將這個問題的答案包裝成函數。

編輯2:

Function getPropertyOfFile $a $b $c
{
    $a.GetDetailsOf($b, $c)
}

Missing function body in function declaration. At line:1 char:28給出一個Missing function body in function declaration. At line:1 char:28 Missing function body in function declaration. At line:1 char:28錯誤。

PowerShell中的函數與cmdlet類似,因此您無需使用逗號分隔參數。

您的調用可能如下所示:

getPropertyOfFile($foo, $bar, $baz)

這導致$a的值為$foo, $bar, $baz (數組),而$b$c$null

你需要像這樣調用它:

getPropertyOfFile $foo $bar $baz

如上所述,它與您調用cmdlet的方式相同。 你甚至可以這樣做

getPropertyOfFile -a $foo -c $baz -b $bar

此時你可能會注意到你的函數參數命名不是很好;-)

編輯:如前所述, 您的功能聲明正常 問題在於您沒有發布的代碼但對於具有PowerShell體驗的人來說很容易推理。 即, 調用您的函數。

當用空格而不是逗號調用函數時,你需要分離你的參數

getPropertyOfFile $arg1 $arg2 $arg3

代替

getPropertyOfFile $arg1, $arg2, $arg3

第二種形式將傳遞一個包含$arg1, $arg2$arg3作為參數$ a

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM