如何在输出结果的最后加上统计信息?


PowerShell交流中心分类: Powershell基础如何在输出结果的最后加上统计信息?
0
lordroc asked 7 年 ago

请教各位大神,
我用select-object选出来结果之后,输出为csv.
但是我想在结果的最后一行加上一条总计,这个应该如何实现???
比如说
get-datastore|select name,freespace,capacity
name,freespace,capacity
a,10,20
b,10,30
c,15,40
我想在最后一行加上sum,35,90.如何增加?
 
感谢.

3 Answers
0
Mooser Lee 管理员 answered 7 年 ago
$row = dir $env:windir -File | select LastWriteTime,Name -First 5
$lastRow = '' | select LastWriteTime,Name
$lastRow.LastWriteTime = '汇总信息:'
$lastRow.Name ='人民的名义'
$row+$lastRow | ConvertTo-Csv

输出效果:

#TYPE Selected.System.IO.FileInfo
"LastWriteTime","Name"
"2017/3/9 18:22:18","36A7q.29J1t"
"2017/4/10 11:08:01","8fD87M1Br4tuSU7.oxgtJ"
"2010/11/21 11:24:22","bfsvc.exe"
"2017/4/13 14:50:35","bootstat.dat"
"2017/3/16 12:07:24","ColorPic Uninstaller.exe"
"汇总信息:","人民的名义"
lordroc replied 7 年 ago

感谢大神,学到了.

0
lordroc answered 7 年 ago

不好意思,还要请教一下:
我将初始输出结果放到$report下面.输出结果如下:
Name                        FreeSpaceGB          CapacityGB            Usage(%)
—-                        ———–          ———-            ——–
datastore1               399              4009                78
iscsi-1T                  999             1023                  76
iscsi-3.4T              2925             3481                 39
然后将结果求和:
$last2=($report|Measure-Object -Property FreeSpaceGB -sum).sum
$last3=($report|Measure-Object -Property capacityGB -sum).sum
$last=@{name = sum;FreeSpaceGB = $last2;CapacityGB = $last3;”Usage(%)” = “_”}
$report+$last
Name                        FreeSpaceGB          CapacityGB            Usage(%)
—-                        ———–          ———-            ——–
datastore1               399.7978515625              400.75 …9787897691827800
iscsi-1T                  999.583984375             1023.75 …7667887667887700
iscsi-3.4T              2925.1513671875              3481.5 …3902053712480250
capacitygb
freespacegb
name
usage(%)
最后的输出结果是上面这个.没有将统计加进去.不显示数值是一方面,每列的对应也不一样.

0
lordroc answered 7 年 ago

谢谢,我最后找到问题了.是usage(%)的问题.需要写成”usage(%)”