Powershell从多行中计算阵列的总计

Powershell从多行中计算阵列的总计,powershell,Powershell,我有一个包含以下数据的数组。我需要找出如何组合数据,并根据JobName进行报告。如果一份工作只有一个成功的状态,那么它将总共有33个,如果它有三个状态,那么它需要将所有的工作名称一起计算 JobName Status Count Job #1 Success 33 Job #2 Failed 9 Job #2 Success 32 Job #2 Warning 5 下面是我尝试过的一些代码 $arrAllTasksBk = $taskListBk | Sort JobN

我有一个包含以下数据的数组。我需要找出如何组合数据,并根据JobName进行报告。如果一份工作只有一个成功的状态,那么它将总共有33个,如果它有三个状态,那么它需要将所有的工作名称一起计算

JobName  Status  Count
Job #1   Success 33
Job #2   Failed  9
Job #2   Success 32
Job #2   Warning 5
下面是我尝试过的一些代码

$arrAllTasksBk = $taskListBk | Sort JobName | Select @{Name="JobName"; Expression = {$_.jobname}}, Status 
$arrAllTasksBk = $arrAllTasksBk | Group-object 'JobName', status |
 Select-Object @{n='JobName';e={$_.Group[0].'JobName'}}, @{n='Status';e={$_.Group[0].Status}}, Count

$arrAllTasksBk = $arrAllTasksBk | Sort JobName |  Select
            @{Name="JobName"; Expression = {$_.jobname}},
            @{Name="Total"; Expression = {$_.Count | Where {($_.status -match "Success") -or ($_.status -match "Warning")-or ($_.status -match "Failed")}}},
            @{Name="Failed"; Expression = {$_.Count | Where {$_.status -match"Failed"}}},
            @{Name="SuccessRate"; Expression = {$_.Count | Where {($_.status -match "Success") -or ($_.status -match "Warning")-or ($_.status -match "Failed")} / {$_.status -match "Success" }}}

这里有一种方法可以得到这些数字。删除或注释掉最终输出中不需要的项目。。。[咧嘴笑]

输出

JobName    : Job #1
TotalCount : 33
Success    : 33
Failed     : 0
Warning    : 0
SuccessPct : 100.00

JobName    : Job #2
TotalCount : 46
Success    : 32
Failed     : 9
Warning    : 5
SuccessPct : 69.57

你们能把一个数据样本导出到json并用数据编辑帖子吗?我不知道你是得到哈希表数组,多维数组还是平面数组。没有足够的信息供我个人提供解决方案。请查看
组对象
cmdlet。它可以对一个属性进行分组,然后您可以对具有相同
.JobName
的项目的
.Count
属性求和如果可以,请更改作业名称以删除嵌入的空格和
#
,因为这两种名称都可能导致属性名称出现奇怪的问题。更改作业名称只是为了显示数据类型。我从Veeam那里获得数据,并试图显示不同工作的成功率。将警告和成功计数相加,然后除以每项工作的总计数。很好,这就是我所缺少的,谢谢您的帮助。@etherk-非常欢迎您!很高兴能帮助。。。[咧嘴笑]
JobName    : Job #1
TotalCount : 33
Success    : 33
Failed     : 0
Warning    : 0
SuccessPct : 100.00

JobName    : Job #2
TotalCount : 46
Success    : 32
Failed     : 9
Warning    : 5
SuccessPct : 69.57