您好我在创建脚本时遇到问题,并希望有人可以提供帮助!
我需要一个脚本来设置邮箱数据库配额默认限制,然后对于设置为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)
}
}
答案 0 :(得分:0)
如评论所示,使用$usrs = Get-Mailbox userPrincipalName
(userPrincipalName而不是用户名来计算多域名)
使用-Whatif
参数测试脚本Set-Mailbox -Whatif .....
其他建议:
$usrs
可能更好地写为$Mailboxes
,因为您正在处理邮箱而不是用户。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
}