2015-02-17 3 views
0

Привет, У меня возникли проблемы с созданием сценария, и я надеюсь, что кто-то может помочь!обмен базы данных ограничений квот

Мне нужен сценарий, который установит ограничения по умолчанию для квот базы данных почтовых ящиков, а затем для всех пользователей, которые установлены в usedatabasequotadefaults:$false, для создания пользовательской квоты потребуется статистическая статистика почтовых ящиков и добавьте 250 МБ.

Я пробовал ниже, но не могу заставить его работать.

Также способ проверить это на отдельного пользователя, прежде чем вся база данных будет здорово

$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

Первый проблема я вижу '$ dbconfig'. Сколько у вас баз данных? '$ dbconfig = (Get-MailboxDatabase)' будет массивом баз данных, который сделает '-gt $ dbconfig.IssueWarningQuota' работать неправильно. Если это не просто '$ dbconfig = Get-MailboxDatabase" Server1 \ MailboxDatabase1 "' – Matt

+0

Измените '$ usrs = get-mailbox username' для проверки одного почтового ящика – Matt

+0

Спасибо за вашу помощь. В настоящее время скрипт работает, но проблема у меня есть со следующим $ (($ MbStats.TotalItemSize.Value.tomb()) + 250)}} – Vytle1

ответ

0

Как прокомментировал использовать $usrs = Get-Mailbox userPrincipalName (UserPrincipalName вместо имени пользователя для учета многодомен-)

Используйте -Whatif параметр, чтобы проверить ваш скрипт Set-Mailbox -WhatIf .....

Другие предложения:

  • Вы можете написать свой скрипт, чтобы быть более описательным в именах переменных. Это прояснит, что они для вас и всех, кого вы попросите, просмотреть свой сценарий.
  • $usrs может быть лучше написан как $Mailboxes, так как вы работаете над почтовыми ящиками, а не с пользователями.
  • петля Еогеасп становится: foreach ($Mailbox in $Mailboxes) {...}
  • $dbconfig = Get-MailboxDatabase - это команда загружает все базы данных почтовых ящиков Exchange в память как совокупность объектов, хранящихся в $ DBCONFIG, то вы ничего не делаете с ним.

Из-за любопытства, почему автоматически поднимать предупреждающую квоту вместо ее удаления?

Edit:

Если вам нужны фильтры, командлет Where-Object является вашим другом:

Чтобы получить список почтовых ящиков, которые не используют квоты по умолчанию и установить их на 250:

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

Хорошо, я просто по сравнению с квестоном. Я вижу больше, что сейчас спрашивает. – Xalorous

+0

Спасибо за помощь. В настоящее время скрипт работает, но проблема у меня есть со следующим $ (($ MbStats.TotalItemSize.Value.tomb()) + 250)}} – Vytle1

+0

Он устанавливает только квину предупреждения 250 МБ, а не к текущему почтовому ящику totalitemsize plus 250MB? – Vytle1

Смежные вопросы