Powershell Count不返回已过滤对象的数量

时间:2015-07-20 16:36:43

标签: powershell count

我有一组对象(来自import-csv命令)我已经在一列上分组了。我根据其他一列过滤了这些数据,并尝试计算。

在过滤后的组中只有一条记录,它才能正常工作。然后它什么都不返回(从我能说的)。

function TestFun ( $data ) {
  $data | Group-Object GroupColumn | Sort-Object SortColumn | % {
    $currentObj = $_ | Select-Object -ExpandProperty Group
    $count1 = ($currentObj | Where-Object { $_.FilterColumn -le 2}).Count
    $count2 = ($currentObj | Where-Object { $_.FilterColumn -ge 2}).Count

  }
}

这基本上就是我正在使用的代码,简化了。就像我说的那样,如果有多行ge和/或le 2,它就可以了。如果只有一行,则不返回任何内容。

我正在分组,然后扩展结果,以便我可以一次遍历分组集合一个结果。如果有更好的方法,我可以接受建议。 :)

1 个答案:

答案 0 :(得分:2)

使用array subexpression operator @( )

$count1 = @($currentObj | Where-Object { $_.FilterColumn -le 2}).Count
$count2 = @($currentObj | Where-Object { $_.FilterColumn -ge 2}).Count

即使没有项目滑过过滤器,也会正确返回0

按照您认为合适的列对它们进行分组很好,但您可能会发现Sort-Object SortColumn似乎并没有做任何事情。

Group-Object在管道下发送的对象只有3个属性(CountNameGroup),但这些属性都不匹配属性名称{{1因此,您可能希望在SortColumn循环中移动该语句:

ForEach-Object