交换数据库配额限制

时间:2015-02-17 22:20:32

标签: powershell exchange-server exchange-server-2010 quota

您好我在创建脚本时遇到问题,并希望有人可以提供帮助!

我需要一个脚本来设置邮箱数据库配额默认限制,然后对于设置为usedatabasequotadefaults:$false的所有用户,它将使用邮箱统计信息totalitemsize并添加250mb来创建自定义配额。

我一直在尝试以下但无法让它发挥作用。

另外一种在整个数据库之前对单个用户进行测试的方法很棒

$usrs = (Get-Mailbox -Database "Server1\MailboxDatabase1") 
$dbconfig = (Get-MailboxDatabase) 
foreach ($i in $usrs){
    $MbStats = (Get-MailboxStatistics -Identity $i)
    if ($MbStats.totalItemSize.value.tomb()) -gt $dbconfig.IssueWarningQuota){
        Set-Mailbox -Identity $i -UseDatabaseQuotaDefaults:$False -IssueWarningQuota $(($MbStats.TotalItemSize.Value.tomb())+250)
    }

}

1 个答案:

答案 0 :(得分:0)

如评论所示,使用$usrs = Get-Mailbox userPrincipalName(userPrincipalName而不是用户名来计算多域名)

使用-Whatif参数测试脚本Set-Mailbox -Whatif .....

其他建议:

  • 您可以编写脚本,使其在变量名称中更具描述性。这将澄清它们对您和您要求查看脚本的任何人的要求。
  • $usrs可能更好地写为$Mailboxes,因为您正在处理邮箱而不是用户。
  • foreach循环变为:foreach ($Mailbox in $Mailboxes) {...}
  • $dbconfig = Get-MailboxDatabase - 此命令将所有交换邮箱数据库作为存储在$ dbconfig中的对象集合加载到内存中,然后您不对其执行任何操作。

出于好奇,为什么要自动提高警告配额而不是删除它们?

编辑:

如果需要过滤器,Where-Object cmdlet是您的朋友:

列出不使用默认配额的邮箱并将其设置为250:

$Mailboxes = Get-Mailbox -Database "Server1\MailboxDatabase1"
$Mailboxes = $Mailboxes | Where-Object -Property UseDatabaseQuotaDefaults -eq $False
foreach ($Mailbox in $Mailboxes) {
    Set-Mailbox $Mailbox -IssueWarningQuota 250000
}