EDIT: похоже, проблема связана с ролями администратора 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", но ни один из них не помог решить проблему.
Сообщите мне, если потребуется какая-либо другая информация, и заранее спасибо.
Обратите внимание на самую последнюю строку, если вы не видите на экране того, что, по вашему мнению, вы должны видеть. Не могу вспомнить, написал ли я это сам или адаптировал (много лет назад) из того, что нашел в Интернете. Также работает в Exchange 2010 (если вы перейдете на V14). Если вы откроете окно PowerShell Exchange, вы можете пропустить часть, которая подключается к 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
Простой способ сделать это - направить все ваши базы данных по запросу:
get-MailboxDatabase | Get-MailboxStatistics | Sort-Object TotalItemSize -Descending | ft DisplayName,@{label=”TotalItemSize(MB)”;expression={$_.TotalItemSize.Value.ToMB()}},ItemCount -auto