编辑:问题似乎是 Exchange 管理员角色的问题。当我的主管将我们的服务器升级到 Exchange 2013 时,似乎我的帐户没有添加到其中任何一个。这也解释了为什么我无法使用我的帐户登录 EAC。我已更新管理员角色,我之前的脚本现在正在运行。
当我使用下面的脚本时,它只返回我自己的信息。
Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | Sort-Object TotalItemSize -Descending | Select-Object DisplayName,TotalItemSize
我也尝试了以下两个脚本,但都返回错误,提示无法找到 -Server 或 -Database 参数。
Get-MailboxStatistics -Server SERVERNAME | Sort-Object TotalItemSize -Descending | ft DisplayName,@{label=”TotalItemSize(MB)”;expression={$_.TotalItemSize.Value.ToMB()}},ItemCount -auto
Get-MailboxStatistics -database "DATABASENAME" | Sort-Object TotalItemSize -Descending | ft DisplayName,@{label=”TotalItemSize(MB)”;expression={$_.TotalItemSize.Value.ToMB()}},ItemCount -auto
我尝试以管理员身份运行 Exchange Management Powershell,以及首先使用“#Enable Exchange cmdlets”,但似乎都无法解决问题。
如果需要任何其他信息,请告诉我,提前致谢。
答案1
如果您在屏幕上看到的不是您认为应该看到的内容,请注意最后一行。我不记得这是我自己写的还是(几年前)根据我在网上找到的内容改编的。在 Exchange 2010 中也可以使用(如果您更改为 V14)。如果您打开 Exchange powershell 窗口,则可以省略连接到 Exchange 的部分。我还在那里留下了我的测试行。
# Make powershell connection to Exchange
. 'E:\Program Files\Microsoft\Exchange Server\V15\bin\RemoteExchange.ps1'
$AllMailboxes = @()
$Mailboxes = Get-Mailbox -ResultSize Unlimited | Select DisplayName, Database, IssueWarningQuota, ProhibitSendQuota, ProhibitSendReceiveQuota, RetainDeletedItemsFor, Alias
#$Mailboxes = Get-Mailbox -ResultSize 10 | Select DisplayName, Database, IssueWarningQuota, ProhibitSendQuota, ProhibitSendReceiveQuota, RetainDeletedItemsFor, Alias
foreach ($Mailbox in $Mailboxes){
$MailboxStats = "" |Select DisplayName,Database,IssueWarningQuota,ProhibitSendQuota,ProhibitSendReceiveQuota,TotalItemSizeInMB,ItemCount,StorageLimitStatus,RetainDeletedItemsFor
$Stats = Get-MailboxStatistics -Identity $Mailbox.Alias
$MailboxStats.DisplayName = $Mailbox.DisplayName
$MailboxStats.Database = $Mailbox.Database
if ($Mailbox.IssueWarningQuota -eq "unlimited") {$MailboxStats.IssueWarningQuota = "database default"}
else {$MailboxStats.IssueWarningQuota = $Mailbox.IssueWarningQuota}
if ($Mailbox.ProhibitSendQuota -eq "unlimited") {$MailboxStats.ProhibitSendQuota = "database default"}
else {$MailboxStats.ProhibitSendQuota = $Mailbox.ProhibitSendQuota}
if ($Mailbox.ProhibitSendReceiveQuota -eq "unlimited") {$MailboxStats.ProhibitSendReceiveQuota = "database default"}
else {$MailboxStats.ProhibitSendReceiveQuota = $Mailbox.ProhibitSendReceiveQuota}
if ($Stats.TotalItemSize -eq $NULL){$MailboxStats.TotalItemSizeInMB = 0}
else {$MailboxStats.TotalItemSizeInMB = $Stats.TotalItemSize.Value.ToMB()}
$MailboxStats.ItemCount = $Stats.ItemCount
$MailboxStats.StorageLimitStatus = $Stats.StorageLimitStatus
$MailboxStats.RetainDeletedItemsFor = $Mailbox.RetainDeletedItemsFor
$AllMailboxes += $MailboxStats
}
$AllMailboxes | Sort-Object StorageLimitStatus,TotalItemSizeInMB -descending | Export-Csv E:\Temp\mailboxsizes.csv -NoTypeInformation
答案2
一个简单的方法是将所有数据库导入到查询中:
get-MailboxDatabase | Get-MailboxStatistics | Sort-Object TotalItemSize -Descending | ft DisplayName,@{label=”TotalItemSize(MB)”;expression={$_.TotalItemSize.Value.ToMB()}},ItemCount -auto