[英]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.