独立处理分组的值

Processing the values of a grouping independently

如何独立处理组的值?

例如,我有以下分组:

$grouping = Get-ChildItem -Recurse | Group-Object Extension

我想对每组分组的子项执行一些操作:

foreach ($group in $grouping}
{ 
    $group.Values | Measure-Object
}

Measure-Object只是一个实际操作的替身,我知道可以直接通过$grouping获取计数。)

我期待的是这样的:

Count    : 96
Average  :
Sum      :
Maximum  :
Minimum  :
Property :

Count    : 12
Average  :
Sum      :
Maximum  :
Minimum  :
Property :

Count    : 14
Average  :
Sum      :
Maximum  :
Minimum  :
Property :

我得到的是:

Count    : 122
Average  :
Sum      :
Maximum  :
Minimum  :
Property :

Measure-Object cmdlet 正在为 整个管道 实例化一次,而不是每组值实例化一次。

如何为每组值实例化一次?

20150220 编辑:

我已将实际问题单独提出,但是

当我 运行 代码时,我得到:

Count    : 1
Average  :
Sum      :
Maximum  :
Minimum  :
Property :

但我每找到一个扩展名就得到一次。

我不确定你想做什么,但是当我 运行 这个 $group.Values 是一个 System.Collections.ArrayList 但只包含一个值。

所以$grouping.Values显示(例如):

.pdf
.txt
.txtfoo
.ps1
<etc.>

$grouping[0].Values,这是第一次迭代的 $group.Values,显示:

.pdf

就是这样。

我的猜测是您希望 foreach ($group in $Grouping.Values) 遍历每个扩展,或者像@Matt 所说的那样,您应该参考 $group.Group 以获取该分组中的项目集合。我不知道哪个,因为我不知道你到底想做什么。

我得到的输出与@BaconBits 报告的代码相同。我能够得到你想要的输出的方法是使用以下内容:

foreach ($group in $grouping)
{ 
    $group.Group | Measure-Object
}

但这只能解决您提供的示例,可能无法解决您的实际问题。

如果这仍然不适合您,您需要在可能的情况下更明确地发布和采样。