如何从使用Group-Object创建的每个组中查找最新日期

时间:2013-12-02 15:10:58

标签: powershell

我有一组自定义对象,共有3个属性。

PS> $aOutput | select -first 10 | ft -auto

MifProblem    FileCreationTime      Client
----------    ----------------      ------
dataldr.box   12/2/2013 9:45:50 AM  UAPURO1-NURSE1
DeltaMismatch 11/25/2013 7:01:37 AM UAPISTRAINING3
DeltaMismatch 11/23/2013 2:52:21 AM PICASO-2123
DeltaMismatch 11/24/2013 7:16:40 AM JADE05
DeltaMismatch 11/29/2013 8:21:10 AM JADE05
DeltaMismatch 11/19/2013 6:31:09 AM JADE05
DeltaMismatch 12/1/2013 5:25:41 AM  JADE05
DeltaMismatch 11/20/2013 5:40:33 AM JADE05
DeltaMismatch 11/18/2013 8:05:43 AM JADE05
DeltaMismatch 11/21/2013 8:30:45 AM JADE05

我正在试图找出如何通过客户端对此数组进行分组,并计算所有MifProblem和最新的FileCreationtime。

以下是我希望根据上面的数组看到的输出:

Client         MifProblems LatestFileCreationTime
------         ----------- ----------------------
UAPURO1-NURSE1 1           12/2/2013 9:45:50 AM
UAPISTRAININ3  1           11/25/2013 7:01:37 AM
PICASO-2123    1           11/23/2013 2:52:21 AM
JADE05         7           12/1/2013 5:25:41 AM

2 个答案:

答案 0 :(得分:5)

尝试一下:

$aOutput | group Client | 
select Count,Name,@{n='Client';e={$_.Group | sort FileCreationTime | select -l 1 -exp FileCreationTime }}

答案 1 :(得分:0)

一种方法是使用哈希表作为累加器 (未经测试,需要V3)

$MIFProblem_ht = @{}
$LastCreate_ht = @{}

$aOutput |
 foreach {
   $MIFProblem_ht[$_.client]++
   if ($_.FileCreationTime -gt $LastCreate_ht[$_.client])
     {$LastCreate_ht[$_.client] = $_.FileCreationTime}
   }

$MIFProblem_ht.keys |
 foreach { [PSCustomObject]@{
   Client = $_
   MifProblems = $MIFProblem_ht[$_]
   LastFileCreationTime = $LasCreate_ht[$_]
  }