Exchange 2013 Powershell 脚本获取邮箱大小列表错误

Exchange 2013 Powershell 脚本获取邮箱大小列表错误

编辑:问题似乎是 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

相关内容