如何独立处理组的值?
例如,我有以下分组:
$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。
答案 0 :(得分:1)
我得到了@BaconBits报告的相同输出。我能够获得所需输出的方式是使用以下内容:
foreach ($group in $grouping)
{
$group.Group | Measure-Object
}
但这仅针对您提供的样本,可能不是您的实际问题。
如果这仍然不适合您,您需要更明确地与您一起发布并尽可能采样。
答案 1 :(得分:0)
当我运行代码时,我得到:
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
来获取该分组中的项目集合。我不知道哪个,因为我不知道你真正想做什么。