我正在创建一个函数,有时它会返回一个空数组,因为没有结果。对于某些情况,此功能可能需要与Invoke-Command
一起运行,例如在远程PC上运行等。
但是我发现,当我的函数在带有脚本块的Invoke-Command
下运行时,它不能返回空数组,而只是null
。
所以我试一试,发现Invoke-Command
似乎无法返回空数组,即使我明确地这样做了。
例如:
> $foo = @()
> $foo.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
> $foo = Invoke-Command -ScriptBlock { @() }
> $foo.GetType()
You cannot call a method on a null-valued expression.
At line:1 char:1
+ $foo.GetType()
+ ~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
> $foo -eq $null
True
那么如何在这种情况下返回空数组呢?这里有什么错吗?或者这里的任何技巧?
答案 0 :(得分:3)
使用逗号,
(数组构造运算符)预先添加返回值。然后返回值不会变为$null
:
$foo = Invoke-Command -ScriptBlock { ,@() }