Эта заметка по необходимым командам при работе с отключенными/удаленными ящиками
Как посмотреть размер БД (databasesize) и свободное в ней место (availablenewmailboxspace)? (удаленные письма/ПЯ не уменьшают размер базы, а освобождают место под новые письма)
Get-MailboxDatabase -Status | ft name,databasesize, availablenewmailboxspace -auto
Отключенные или удаленные по-умолчанию не удаляются сразу, настройка лимита возможна через ECP в свойствах базы (limits-Keep deleted mailboxes for days)
Как посмотреть список пя со статусом отключен во всех БД
Get-MailboxDatabase | Get-MailboxStatistics | Where { $_.DisconnectReason -eq "Disabled" } | ft DisplayName,Database,DisconnectDate,MailboxGUID
Как посмотреть список пя со статусом отключен в одной БД (MAIN-DB)
Get-MailboxStatistics –database MAIN-DB | Where { $_.DisconnectReason -eq "Disabled" } | ft DisplayName,Database,DisconnectDate,MailboxGUID
Как посмотреть список удаленных ПЯ со статусом SoftDelete
Get-MailboxDatabase | Get-MailboxStatistics | Where { $_.DisconnectReason -eq "SoftDeleted" } | ft DisplayName,Database,DisconnectDate,MailboxGUID
Как окончательно удалить почтовый ящик. Identity берем из предыдущих команд (MailboxGUID). Указание MailboxState обязательное, неправильное указание MailboxState приведет к исключению. Дананя команда не удалит почтовый ящик, если он не имеет указанный MailboxState
Remove-StoreMailbox -Database MAIN-DB -Identity "2556944e-8ccb-4c7e-8bd3-ee2a223b071e" -MailboxState Disabled
Удаление всех ПЯ во всех БД со статусом Disabled
Get-MailboxDatabase | Get-MailboxStatistics | where {$_.DisconnectReason -eq "Disabled"} | foreach {Remove-StoreMailbox -Database $_.database -Identity $_.mailboxguid -MailboxState Disabled}
Удаление всех ПЯ в определенной БД (MAIN-DB) со статусом Softdeleted. Напоминаю, –Whatif позволяет посмотреть что будет при выполнении команды, без ее выполнения
Get-MailboxStatistics –Database MAIN-DB | Where-Object {$_.DisconnectReason –eq “Softdeleted”} | ForEach {Remove-StoreMailbox –Database $_.database –identity $_.mailboxguid –MailboxState Softdeleted}
Возможно потребуется использвать не -eq, а -like и $_.database.name вместо $_.database
Get-MailboxStatistics –Database MAIN-DB | Where-Object {$_.DisconnectReason –like “Softdeleted”} | ForEach {Remove-StoreMailbox –Database $_.database.name –identity $_.mailboxguid –MailboxState Softdeleted}
Стоит отметить то, что статистика обновляется не сразу и данные об отключенных/удаленных ящиках может появится не сразу, поэтому если припекает, то можно пнуть
Get-MailboxStatistics -Database MAIN-DB | ForEach {Update-StoreMailboxState -Database $_.Database -Identity $_.MailboxGuid -Confirm:$false}
Подключаем отключенный ящик к его старому пользователю
Connect-Mailbox -Identity "AA" -Database MAIN-DB -User AA
Восстановить содержимое отключенного пя в другой ящик
New-MailboxRestoreRequest -SourceDatabase MAIN-DB -SourceStoreMailbox "AA" -TargetMailbox "Admin"
Для очистки свободного пространства (т.н. WhiteSpace) потребуется выполнить дефрагментацию, которая по сути является обычным переносом в пустую базу. Для выполнения операции нужно минимум 110% свободного места на диске от размера БД. Для выполнения операции используется Eseutil /d. Логика проста - переходим в каталог БД, размонтируем БД, запускаем дефрагментацию, монтируем ящик обратно.
cd F:\Mailbox\base\
Dismount-Database MAIN-DB
Eseutil /d base.edb /t E:\temp\temp.edb
Mount-Database MAIN-DB
У меня БД MAIN-DB весит 1,5Тб, а диск всего 2, поэтому для темп используется другая локация. Стоит также обратить внимание на то, что скорость выполнения зависит от многих факторов, например 1,5Тб может фрагментироваться больше суток.
Комментариев нет:
Отправить комментарий