2

我正在使用可以返回一个或多个元素的 Cmdlet:

PS C:\Users\admin> $x = Get-myObjects
PS C:\Users\admin> $x


ComputerName               : test-2
Description                : n/a
Id                         : cbcb1ece-99f5-4478-9f02-65a622df8a98
IsActive                   :
MinNum                     : 0
Name                       : scom-test2-mp
modeType                   : 1
PSComputerName             :

如果我使用长度属性,我什么也得不到。

PS C:\Users\admin> $x.length
PS C:\Users\admin>

但是,如果Get-myObjectscmdlet 返回 2 或更多,那么它是一个集合,我可以获取.length属性。

如果 Get-myObjects cmdlet 为一个对象值返回一个对象,如何使 .length 工作?

4

3 回答 3

3

在将 cmdlet 的返回值分配给变量时,您始终可以将结果强制放入数组中:

$x = @(Get-myObjects)
$x.Length

或“按需”:

$x = Get-myObjects
@($x).Length
于 2013-08-03T00:01:38.337 回答
2

使用Measure-Objectcmdlet。这里有点笨拙,因为你不能以优雅的方式得到计数。

$x = Get-myObjects
$x | measure-object

输出:

计数:1
平均值:
总和:
最大值:
最小值:
属性:

如果您只想要计数:

$x | measure-object | select -ExpandProperty Count

输出:

1

于 2013-08-03T06:31:13.537 回答
0

我注意到在这种情况下,最好使用foreachpowershell 的循环。

PowerShell 中逻辑循环的引用

例子:

foreach($i in $x)
{
  Write-Host $i.Name
}

当 $x 有一个或多个元素时,上面的例子都适用。

于 2013-08-02T23:07:47.650 回答