如何在运行脚本块时使Invoke-Command返回空数组而不是null

时间:2017-07-24 08:33:02

标签: powershell invoke-command

我正在创建一个函数,有时它会返回一个空数组,因为没有结果。对于某些情况,此功能可能需要与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

那么如何在这种情况下返回空数组呢?这里有什么错吗?或者这里的任何技巧?

1 个答案:

答案 0 :(得分:3)

使用逗号,(数组构造运算符)预先添加返回值。然后返回值不会变为$null

$foo = Invoke-Command -ScriptBlock { ,@() }