为什么这段代码不显示 PrimarySmtpAddress?
Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | where{$_.TotalItemSize -ge 1000MB} | Sort-Object TotalItemSize -Descending | Select-Object PrimarySmtpAddress,TotalItemSize | Export-CSV mailboxsize.csv
为什么这段代码不显示 PrimarySmtpAddress?
Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | where{$_.TotalItemSize -ge 1000MB} | Sort-Object TotalItemSize -Descending | Select-Object PrimarySmtpAddress,TotalItemSize | Export-CSV mailboxsize.csv
因为您将 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