0

为什么这段代码不显示 PrimarySmtpAddress?

Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | where{$_.TotalItemSize -ge 1000MB} | Sort-Object TotalItemSize -Descending | Select-Object PrimarySmtpAddress,TotalItemSize | Export-CSV mailboxsize.csv
4

1 回答 1

1

因为您将 Get-Mailbox 的结果通过管道传输到 Get-MailboxStatistics。

Get-Mailbox 返回包含 PrimarySmtpAddress 属性的 Microsoft.Exchange.Data.Directory.Management.Mailbox 对象。但是,一旦将这些对象通过管道传输到另一个 cmdlet(在本例中为 Get-MailboxStatistics),管道的其余部分将包含该 cmdlet 的结果。因此,Get-MailboxStatistics 运行后,管道包含 Microsoft.Exchange.Data.Mapi.MailboxStatistics 对象——这些对象没有 PrimarySmtpAddress 属性。在将对象传递到管道之前,您需要将 PrimarySmtpAddress 存储在变量中;像这样的东西:

foreach ($mailbox in (Get-Mailbox -ResultSize Unlimited)) {
    $properties = @{
        PrimarySmtpAddress = $mailbox.PrimarySmtpAddress
        TotalItemSize = $mailbox | Get-MailboxStatistics | Select-Object -ExpandProperty TotalItemSize
    }
    New-Object PSObject -Property $properties
} | where{$_.TotalItemSize -ge 1000MB} | Sort-Object TotalItemSize -Descending 
于 2013-10-02T19:17:30.323 回答