powershell组度量对象中的条件条件?

powershell组度量对象中的条件条件?,powershell,grouping,Powershell,Grouping,我有以下形状的数据: externalName,day,workingHours,hoursAndMinutes PRJF,1,11,11:00 PRJF,2,11,11:00 PRJF,3,0,0:00 PRJF,4,0,0:00 CFAW,1,11,11:00 CFAW,2,11,11:00 CFAW,3,11,11:00 CFAW,4,11,11:00 CFAW,5,0,0:00 CFAW,6,0,0:00 到目前为止,代码是 $gdata = Import-csv $filepath\

我有以下形状的数据:

externalName,day,workingHours,hoursAndMinutes
PRJF,1,11,11:00
PRJF,2,11,11:00
PRJF,3,0,0:00
PRJF,4,0,0:00
CFAW,1,11,11:00
CFAW,2,11,11:00
CFAW,3,11,11:00
CFAW,4,11,11:00
CFAW,5,0,0:00
CFAW,6,0,0:00
到目前为止,代码是

$gdata = Import-csv $filepath\$filename | Group-Object -Property Externalname;
$test = @()
$test += foreach($rostername in $gdata) {
    $rostername.Group | Select -Unique externalName,
    @{Name = 'AllDays';Expression = {(($rostername.Group) | measure -Property day).count}},
}
$test;
我不能解决的是如何对天不为零的行进行有条件计数。 目的是生产两条生产线:

PRJF, 4, 2, 11
CFAW, 6, 4, 11
i、 e.花名册名称、花名册长度、工作日数、平均每天工作小时数。

  • 您需要一个where对象来过滤非零工作时间
  • 我将使用
    [PSCustomObject]
    生成一个新表
只使用一个测量对象,编辑效率更高一点

## Q:\Test\2018\08\06\SO_51700660.ps1
$filepath = 'Q:\Test\2018\08\06'
$filename = 'SO_S1700660.csv'

$gdata = Import-Csv (Join-Path $filepath $filename) | Group-Object -Property Externalname

$test = ForEach($Roster in $gdata) {
    $WH = ($Roster.Group.Workinghours|Where-Object {$_ -ne 0}|Measure-Object -Ave -Sum)
    [PSCustomObject]@{
        RosterName   = $Roster.Name
        RosterLength = $Roster.Count
        DaysOn       = $WH.count
        AvgHours     = $WH.Average
        TotalHours   = $WH.Sum
    }
}
$test | Format-Table
样本输出:

> .\SO_51700660.ps1

RosterName RosterLength DaysOn AvgHours TotalHours
---------- ------------ ------ -------- ----------
PRJF                  4      2       11         22
CFAW                  6      4       11         44