1

次の非正規化されたテーブルのようなソースデータがあります

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結果に表示名を表示するための適切な構文は何 ですか?

4

2 に答える 2

1

DisplayName = ..次のように行を入れ替えます。

DisplayName = $_.Group | Select-Object -ExpandProperty DisplayName -Unique

なんらかの魔法の理由でDisplayNameグループ内に異なる値がある場合、次のような配列を取得しますが{value1, value2},、通常は単一の名前のみを返します:)

于 2013-02-19T17:35:50.350 に答える
0

Graimerの答えは完全に問題ありませんがDisplayName、すべてのグループ要素の値が同じであると仮定して、グループの最初の要素からを抽出することもできます。DisplayName

DisplayName = $_.Group[0].DisplayName

別の選択肢を知らせたかっただけです。

于 2013-02-19T19:59:07.313 に答える