独立处理分组的值

时间:2015-02-17 20:50:39

标签: powershell

如何独立处理组的值?

例如,我有以下分组:

$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编辑:

我已将实际问题单独提出,但much more specific question

2 个答案:

答案 0 :(得分:1)

我得到了@BaconBits报告的相同输出。我能够获得所需输出的方式是使用以下内容:

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

但这仅针对您提供的样本,可能不是您的实际问题。

如果这仍然不适合您,您需要更明确地与您一起发布并尽可能采样。

答案 1 :(得分:0)

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

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

但是我发现每次扩展都会得到一次。

我不确定你要做什么,但是当我运行时$group.ValuesSystem.Collections.ArrayList,但只包含一个值。

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

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

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

.pdf

就是这样。

我的猜测是你想要foreach ($group in $Grouping.Values)遍历每个扩展,或者像@Matt说你应该引用$group.Group来获取该分组中的项目集合。我不知道哪个,因为我不知道你真正想做什么。