我的sourcedata类似于以下非规范化表
DisplayName LogRecordCount LogRecordBytes
----------- -------------- --------------
Mailbox - Low, 459 43756
Mailbox - Low, 1628 185542
Mailbox - Low, 2575 264474
Mailbox - Low, 522 48813
Mailbox - Low, 410 138212
Mailbox - Low, 1057 200043
Mailbox - Freed 3866 2170719
Mailbox - Freed 606 370304
Mailbox - Freed 4137 1939924
Mailbox - Freed 3655 1654650
我的目标是撰写类似于以下内容的摘要
DisplayName LogRecordCount
----------- --------------
Mailbox - Low, 6651
Mailbox - Freed 12264
以下代码非常接近我需要的内容,但“DisplayName”没有出现。 DisplayName的值隐藏在Group-Object
命令的结果中。
$stats | ? {$_.DigestCategory -eq 'LogBytes'} | group MailboxGuid | %{
New-Object psobject -Property @{
MailboxGuid = $_.Name
LogRecordBytes = ($_.Group | Measure-Object LogRecordBytes -Sum).Sum
DisplayName = $_.Group.DisplayName
}
}| sort-object LogRecordBytes | ft -a DisplayName, MailboxGuid, LogRecordBytes
问题
DisplayName = $_.Group.DisplayName
在结果中显示显示名称的正确语法是什么?
答案 0 :(得分:1)
使用以下内容换掉DisplayName = ..
行:
DisplayName = $_.Group | Select-Object -ExpandProperty DisplayName -Unique
如果由于一些神奇的原因,组中有不同的DisplayName
值,您将得到一个类似{value1, value2},
的数组,但通常它只返回一个名称:)
答案 1 :(得分:0)
Graimer的答案非常好,但您也可以从组的第一个元素中选择DisplayName
,假设所有组元素都具有DisplayName
的相同值
DisplayName = $_.Group[0].DisplayName
只是想让你知道另一种选择。