独立处理分组的值
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
}
但这只能解决您提供的示例,可能无法解决您的实际问题。
如果这仍然不适合您,您需要在可能的情况下更明确地发布和采样。
如何独立处理组的值?
例如,我有以下分组:
$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
}
但这只能解决您提供的示例,可能无法解决您的实际问题。
如果这仍然不适合您,您需要在可能的情况下更明确地发布和采样。