0
我有一個簡單的PowerShell功能功能參數成爲一個數組
function Foo($a, $b){
'$a = ' + $a
'$b = ' + $b
}
我通過調用
Foo("dogs", "cat");
一切到目前爲止,我讀過調用它說,預計產量
$a = dogs
$b = cats
我真正看到的是:
$a = dogs cat
$b =
如果我重寫我功能爲:
function Foo($a, $b){
'$a is ' + $a.GetType().Name;
'$b = ' + $b.GetType().Name;
}
的輸出是:
$a is Object[]
You cannot call a method on a null-valued expression.
At C:\WCMTeam\Percussion\Notifier\foo.ps1:4 char:7
+ '$b = ' + $b.GetType().Name;
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
顯然$ A和$ b被組合成一個單一的陣列。我該怎麼做才能做到這一點,我應該如何改變它以獲得預期的結果?
將它稱爲'Foo(「dogs」「cats」)'會導致它失敗,並在表達式或語句中出現錯誤「Unexpected token」「cats」。但將它改爲「Foo」狗「貓」確實可以解決問題。謝謝;這與VBScript中的括號規則一樣瘋狂。 – ThatBlairGuy 2013-04-04 19:47:42
聽那個男人(李)。你不應該在你的函數調用中使用'('和')'。 PowerShell不等於c#,PS有它自己的語言(儘管很多.Net/C#代碼工作)。 – 2013-04-04 20:36:16
哦,我聽好了。只是發現轉變有點迷失方向。 : - / – ThatBlairGuy 2013-04-04 21:51:24