独立处理分组的值

  • 本文关键字:处理 独立 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版本:

我把实际的问题作为一个单独的问题,但要具体得多。

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

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

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

如果这仍然不适用于你,你需要更明确地与你的问题和样品,如果可能的话。

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

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来获得该分组中的项目集合。我不知道是哪一个,因为我不知道你到底想做什么。

最新更新