Технет такой технет. Пятничный пост


Всяко бывало, но так хорошо в первый раз.

https://social.technet.microsoft.com/Forums/ru-RU/41e0e11a-157f-4480-a0c7-68582efccece/-exchange-server-2016-5?forum=ExchangeServer2016

Please update UseDatabaseQuotaDefaults to false in order for mailbox quotas to apply. Первый баг в Exchange 2016 CU 5


Граждане, накатившие Exchange 2016 CU 5 уже немножко пострадали. Свежий баг проявляется вот в таком предупреждении в ECP. Обещают поправить в следующем CU6. Подождём, больше ничего другого и не остается. (Хотя, есть, конечно, вариант убежать в О365 :)) Побольше информации о проблеме, как водится, можно узнать на скандально неизвестном ресурсе. Советую держать по рукой русско-немецкий разговорник. 😉

 

Почему хорошо


 

читать блог команды Exchnage?

Да и почему вообще хорошо читать? Потому, что можно узнать много нового, полезного и интересного, конечно же.

Почему хорошо поставить последний CU? Потому, что там еще нет жестких требований к уровням леса/домена.

Именно поэтому следующий, шестой по счету Exchange Server 2016 Cumulative Update 6 (CU6), будет для многих последним шансом установить Exchange Server 2016 без обязательного повышения уровней леса/домена. Понятно, что потом такая проверка будет вшита в инсталляторе, как сейчас с .Net, и только она будет признана поддерживаемой и православной. А нижние версии сразу же уйдут в категорию неподдерживаемых. Поэтому про это надо знать заранее. А для этого рекомендуется только одно- вдумчиво просматривать в свободную минуту ценные источники информации, такие, как блог Димончика, куда же мы без него продуктовой команды Exchange.

Почему хорошо все, что пишут в интернетах, проверять руками в лабе? По двум причинам:

1) Надо всегда проверить лично, а не пребывать в уверенности- на слайде у преподавателя написано, на технете на странице написано, веруем. Это повышает конечно, навык верований до 80%, но в реальной жизни помогает плохо.

2) Только так можно лучше разобраться с темой, которую вы изучаете. Поэтому практика, и еще раз практика.

Будьте внимательны и осторожны, берегите себя.

Полезная ссылка на тему.

Архитектура Exchange Server 2016


Борис Лохвицкий, Microsoft, вчера прочитал блестящий доклад по архитектуре Exchange Server 2016. Ссылка, как появится в наличии, будет здесь, а пока ниже хотелось бы дать пару ценных комментариев. Upd

В конце доклада были заданы вопросы, например «а как следить, не заканчивается ли место на дисках с ящиками, это всегда очень плохо». Понятно, что без мониторинга здесь не обойтись, но со своей стороны хотелось бы напомнить о том, что у нас есть PowerShell, и если не мы, так кто-то уже мог написать штуку, которая автоматически делает перераспределение ящиков в несбалансированных базах. Я чатике про это дело ответить подробно не успел, и решил поделиться этим ТЗ, хотя, какое, оно к черту, ТЗ. Все уже давно написано и граждане MVP, такие, как к примеру Nuno Motta уже для 2007 такие вещи делали, уже скоро 10 лет будет таким скриптам.

Итак, предложу вашему вниманию проекты ExchangeRebalancingReport и Auto-Distribute Mailboxes

В скобках хочется отметить, что похожих вещей в интернетах есть около десятка, бери, допиливай да пользуйся, как говорится. И бонусом, спрашивали про трекинг: вот два проекта с графикой, (хотя я за последние годы с 2013 и отсутствием графики уже и не замечаю дискомфорта) начинающим детективам очень пригодится.

Exchange 2013 Message Tracking Log GUI

https://gallery.technet.microsoft.com/office/Exchange-message-tracking-73a2604c

https://gallery.technet.microsoft.com/office/Exchange-2013-Message-875b3eeb

Ходите чаще в галерею и занимайтесь Exchange Server.

А вот подкрался и CU, когда его совсем не ждешь…


Я честно ждал, начиная с 20-го февраля (поскольку свечной завод варил все ровно по три месяца в срок) свой новый CU, ибо лаба простаивала. Сначала ждал, потом ругался, потом грозил кулаками. На этой неделе в понедельник проверил и почти забыл уже об обновлениях. И тут, когда я потерял бдительность и пошел спать, их и выкатили. Встречаем:

https://blogs.technet.microsoft.com/exchange/2017/03/21/released-march-2017-quarterly-exchange-updates/

Exchange Server 2007 заканчивается 4/11/2017. И Update Rollup 23 с таким красивым числом будет как все понимают, последним.

2016 продукт получил Exchange Server 2016 Cumulative Update 5 а 2013 Exchange Server 2013 Cumulative Update 16 .Врут, что индексы починили, будем проверять.

Успел поставить и 2013 и 2016 и 2010. Семерки нету в руках, ничего сказать не могу. Везде полет нормальный.

Что хочется добавить. Кто не поставил дотнет 4.6.2 раньше, тот  подлый трус ССЗБ. Сейчас это пререквизит к установщику, и это правильно, нехай все будут на последнем, больше будет счастья.

Проверить версию фреймворка можно так:

Get-ItemProperty -Path “HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full” | Format-List Release

Свериться со значением версии можно тут.

 

Screenshot_7

Ну, и традиционный опрос:

UCU

This mailbox database contains one or more mailboxes…


Ошибка, так знакомая любому администратору, продолжает нас радовать и в новом, 2016 Exchange.

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

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

This issue occurs because Exchange Server 2016 introduces an AuditLog mailbox. This mailbox may be still present and blocking removal of the database.

https://support.microsoft.com/ru-ru/help/3093175/error-when-trying-to-remove-a-mailbox-database-on-exchange-server-2016

Всем удачи, занимайтесь Exchange!

 

Снова автоматизация


и на этот раз небольшой рутинной задачки.

Пока вовнеи рассуждают о рыбах почтовых ящиков уволенных сотрудников, такую задачу быстро решили вот так:

Задачу разбиваем на два блока,

Сперва выполняем этот блок.

$umove  = @()
$uclear = @()
$err    = @()
$m      = 2
$body   = New-Object Text.StringBuilder

$org = Get-ADOrganizationalUnit -Filter «Name -eq ‘Disabled Users'» -Properties CanonicalName
$du = Get-User -RecipientTypeDetails UserMailbox | Where {$_.UserAccountControl -match ‘AccountDisabled’}
$dm = $du | Get-Mailbox
$dm | Foreach {
if($_.OrganizationalUnit -ne $org.CanonicalName) {
try {
Move-ADObject -Identity $_.DistinguishedName -TargetPath $org.DistinguishedName
$umove += «`t$($_.DistinguishedName) перенесена в $($org.DistinguishedName)»
}
catch {
$err += «`t$($_.DistinguishedName) не перенесена в $($org.DistinguishedName) — $_»
}
}

$l = New-TimeSpan (Get-MailboxStatistics $_).LastLogonTime.Date $d.AddMonths(-$m).Date
if ($l.Days -eq 1) {
$uclear += «`t$($_.DistinguishedName) будет очищен на следующий день»
}
}

if($umove) {
$body.AppendLine((«Перенесенные:»,$umove | Out-String)) | Out-Null
}

if($err) {
body.AppendLine((«Ошибки:»,$err | Out-String)) | Out-Null
}

if($uclear) {
body.AppendLine((«Для очистки:»,$uclear | Out-String)) | Out-Null
}

$body = $body.ToString()
if($body)
{
Send-MailMessage -From a@contoso.com -To b@contoso.com -Subject «Отчет» -Body $body -SmtpServer smtp.contoso.com
}

 

##############################################Запускать эту часть блока с интервалом для репликации всех изменений.

 

$m = 2
$path = «\\$env:ComputerName\C$\Pst»
$du = Get-User -RecipientTypeDetails UserMailbox | Where {$_.UserAccountControl -match ‘AccountDisabled’}
$dm = $du | Get-Mailbox
$dusers = $dm | Where { (Get-MailboxStatistics $_).LastLogonTime.Date -le (Get-Date).AddMonths(-$m).Date}

foreach($duser in $dusers) {
$mpath = Join-Path $path «$($user.alias).pst»
New-MailboxExportRequest -Mailbox $duser -FilePath $mpath | Out-Null

while(!(Get-MailboxExportRequest -Mailbox $duser -Status Completed))
{
Start-Sleep -Sec 300
}

$req = Get-MailboxExportRequest -Mailbox $duser -Status Completed
if($req) {
$req | Remove-MailboxExportRequest -Confirm:$false
Search-Mailbox -id $duser -DeleteContent -Confirm:$false -Force
}
}

 

Что делаем в рамках задачи?

Сначала ищем отключенные учетки уволенных сотрудников, с условием что отключены они более 2-х месяцев назад, перемещаем такую учетную запись в спец контейнер с уведомлением что она была перенесена, выполняем экспорт в .PST, и перед очисткой ящика отсылаем за день уведомление что ящик будет очищен.