Розгортаємо lync 2018
Перш за все зазначу, що моя тестова середовище буде далека від тієї, де було проведено розгортання, але я сподіваюся, що основна суть не буде втрачена. Тестова середовище містить один ліс до складу якого входять два домена uc.loc і branch.uc.loc.

Продуктивне середовище складалася приблизно з 20 доменів, які обслуговували близько 60 контролерів домену. Сервери Lync були розгорнуті в кореневому домені. Облікові записи користувачів Lync так само перебували в кореневому домені.
У підготовчі етап зазвичай входить:
1. Підготовка Служби Каталогів Active Directory
2. Підготовка інфраструктури DNS
3. Підготовка сертифікатів
Підготовка Служби Каталогів Active Directory
Спочатку необхідно переконатися, що поточна інфраструктура не була підготовлена для інших версії Lync або OCS / LCS.
Для того, щоб визначити чи була служба каталогів підготовлена раніше, необхідно подивитися в розділі схеми наявність об'єкта CN = ms-RTC-SIP-SchemaVersion, версія ПО визначається за допомогою значення атрибута rangeUpper:

LcsCmd / forest / action: checkschemaprepstate /l:c:\logs\checkschema.html
LcsCmd / forest / action: checkforestprepstate /l:c:\logs\checkforest.html

Перевірка домену uc.loc:
LcsCmd /domain:uc.loc / action: checkdomainprepstate /l:c:\logs\checkdomain.html

Якщо uc.loc кореневої домен, а branch.uc.loc дочірній, команда виглядає наступним чином:
LcsCmd.exe /domain:uc.loc / action: CheckDomainAddState /refdomain:branch.uc.loc /l:c:\logs\checkdomainadd.html


У розділі Pools знаходяться розташовані сервери Standart або пули серверів Enterprise. У розділі Global Settings власне зберігаються глобальні настройки інфраструктури LCS.
1. Деактивация компонент
2. Видалення файлів LCS
3. Видалення підготовки домену та ліси.
Деактивация Standard Edition:
lcscmd.exe /Server:lcs.branch.uc.loc / Role: SE / Action: Deactivate / Force /refdomain:branch.uc.loc
Після того, як сервер деактивовано, контейнер RTC Service / Pools буде порожнім.
Далі має бути видалити дозволу, які були створені за допомогою DomainAdd для домену branch.uc.loc:
LcsCmd.exe /domain:uc.loc / action: DomainRemove /refdomain:branch.uc.loc /l:c:\logs\remove_domainadd.html

Перевірка: LcsCmd.exe /domain:uc.loc / action: CheckDomainAddState /refdomain:branch.uc.loc /l:c:\logs\checkdomainaddremove.html
Після цього можна приступати до видалення підготовки доменів
Lcscmd /domain:branch.uc.loc / action: domainunprep /l:c:\logs\uc.loc_unprepdom.html
Lcscmd /domain:uc.loc / action: domainunprep /l:c:\logs\uc.loc_unprepdom.html
При цьому повинні піти групи RTC *, а так само записи ACE з цими групами на контейнерах в розділі домену

Результати перевірки підготовленості домену uc.loc
Залишився останній крок, це видалення підготовленості лісу
Lcscmd / forest / action: forestunprep /l:c:\logs\forest_unprep.html
Результати виконання команди:

Результати перевірки підготовленості лісу:
За допомогою ADSIEdit можна переконатися, що контейнер RTC Service видалений.
Після виконання команди forestunprep необхідно дочекатися реплікації глобальних каталогів в усьому лісі. Вручну упевнитися, що контейнер RTC Service видалений, можна за допомогою ADSIEdit, підключившись до TCP 3268 "dc = uc, dc = loc"
- Підготовка схеми;
- Підготовка лісу;
- Підготовка домену.
Перевірка поточної версії Powershell:
get-host | Select-Object version
Після установки Powershell, номер версії повинен бути 3.0
Add-WindowsFeature Web-Dyn-Compression, desktop-experience, RSAT-ADDS, Web-Server, Web-Scripting-Tools, Web-Windows-Auth, Web-Asp-Net, Web-Log-Libraries, Web-Http-Tracing , Web-Stat-Compression, Web-Default-Doc, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Http-Errors, Web-Http-Logging, Web-Net-Ext, Web-Client-Auth, Web -Filtering, Web-Mgmt-Console, Msmq-Server, Msmq-Directory
- Установка виправлення KB 2646886
- Установка Silverlight (необов'язково)
Інсталяція Microsoft Visual C ++ Minimum Runtime


Для підготовки схеми необхідно:
- Переконатися, що на контролері з роллю «схема майстер» дозволений віддалений доступ до реєстру:
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ SecurePipeServers \ winreg
Description: REG_SZ
Value: Registry Server
Перевірити ACL winreg на предмет того, якого рівня доступу і якої групи дозволений доступ.
Підготовку схеми можна перевірити вручну, за допомогою перевірки атрибута rangeUpper. см. вище таблицю з значеннями, а так само за допомогою команди:
Get-CsAdServerSchema -Report c: \ logs \ verify_schema.html
(Розглянути в моніторі як працює цей цмдлет)
Я вважаю, що переходити до підготовки лісу не переконавшись, що реплікація змін схеми між усіма доступними контролерами пройшла - не зовсім коректно. Принаймні при цьому зберігається контроль над процесом оновлення Active Directory, і в разі якихось проблем адміністратор вирішує проблеми послідовно і переходить до наступного етапу оновлення. Можливо, що такий підхід не економить час, але однозначно економить нерви :). На оновлення 20 доменів (60 контролерів) було витрачено близько трьох годин.
З урахуванням вищесказаного був написаний невеликий скрипт, який відповідно до списку контролерів перевіряв версію атрибута rangeUpper.
Скрипт відповідно до списком контролерів (DomainControllers.txt) відображає назву контролера, значення rangeUpper, значення rangeLower. Файл DomainControllers.txt формується вручну.
Set objFSO = CreateObject ( «Scripting.FileSystemObject»)
If (objFSO.FileExists (strFileName)) Then
Set f = objFSO.OpenTextFile (strFileName, 1, False)
Do While (f.AtEndOfStream <> true)
strDCName = f.Readline
set Obj = GetObject ( «LDAP: //» strDCName «/ CN = ms-RTC-SIP-SchemaVersion, CN = Schema, CN = Configuration, DC = mbrd, DC = ru»)
WScript.Echo now «,» strDCName «,» obj.rangeUpper «,» obj.rangeLower
Set Obj = nothing
Після того, як реплікація між контролерами пройшла успішно, приступаємо до підготовки лісу. Для того, щоб підготувати ліс, необхідно, щоб комп'ютер з якого виконується команда Enable-CsAdForest був включений до кореневого домену лісу, інакше відобразиться наступна помилка:

Команда для підготовки лісу:
Enable-CsAdForest -GroupDomain uc.loc -GlobalCatalog dc01.uc.loc -Verbose -Report c: \ logs \ EnableForest.html
Експериментально було помічено, що якщо команда Enable-CsAdForest не містить атрибути GroupDomain і GlobalCatalog підготовка лісу закінчувалася з помилкою:
Після того, як ліс підготовлений в конфигурационной партіціі з'явиться контейнер «RTC Services»

А так же в оснащенні ADUC в контейнері Users з'являться нові групи CS * і RTC *.
Для перевірки поновлення лісу на контролерах так само був зроблений маленький скрипт:
import-csv. \ DomainControllers.txt | foreach-object <
$ DC = $ _. DC
$ Result = get-csAdForest -GlobalSettingsDomainController $ DC
write-host «$ result $ dc»
Нижче представлений результат виконання сценарію. У ньому видно, що dc01.uc.loc підготовлений, а до dc02.branch.uc.loc оновлення ще не дійшла.
Залишилася тільки підготовка домену. Для того, щоб підготувати домен uc.loc необхідно скористатися командою:
Enable-csaddomain -domain uc.loc -report c: \ logs \ prepdomain.html
Тут так само існує невеликий нюанс - ім'я домену має бути FQDN, інакше відображається помилка:

Перевірити підготовку домену можна за допомогою команди
Get-csaddomain -domain uc.loc -report c: \ logs \ prepdomain.html
Результат виконання команди:

У моєму випадку в домені було тільки два контролера в одному сайті, тому скрипт перевірки я робити не став, але в інфраструктурі, де один домен обслуговують понад 10 контролерів в різних сайтах, автоматизація перевірки полегшить життя.
На цьому підготовку Служби Каталогів можна вважати завершеною.
Вітаю!
Зіткнувся з проблемою. При спробі підготувати ліс видає наступну помилку:
що це значить, не підкажете?
Напишіть будь ласка рівень лісу, в яких групах користувач з під якого виконуєте процедуру поновлення, пройшло чи оновлення схеми успішно і пройшла репліка між усіма контролерами. Відразу можу порадити - якщо зіткнулися з проблемою відновлення робіть клон ВМ контролера і в тестовій середовищі продовжуйте експериментувати, взагалі перевірка поновлення на тестовій середовищі продуктивної служби каталогів це обов'язкова процедура.
А взагалі проблема скоріше за все зважитися так:
запустіть підготовку лісу з наступними ключами:
Enable-CsAdForest -GroupDomain domain.local -GroupDomainController dc01.domain.local -GlobalCatalog dc01.domain.local
Наскільки я розумію, якщо в продуктивний ніколи не було LCS / OCS, тоді Lync зберігає конфігурації в конфигурационной партіціі, в розділі RTC Service, при цьому точно такого контейнера немає. А ось якщо був LCS або інші старі версії, тоді конфігурація зберігалася в доменній партіціі і Lync за замовчуванням створить там контейнери, якраз в Microsoft. Тому якщо у вас були старі версії треба було спочатку їх видалити, якщо розгортання Lync проходить вперше в середовищі, то такий контейнер не потрібен. Якщо не складно можете показати CN цього контейнера? Напевно він знаходиться в доменній партіціі ...
Доброго вам дня.
Виник ось яке питання.
Завершено з попередженнями
Дозволи на обробку для об'єкта «CN = RTCUniversalGlobalReadOnlyGroup, CN = Users, DC = (Моє ім'я домену), DC = local»
Попередження: ACE (Моє ім'я домену) \ RTCUniversalGlobalReadOnlyGroup; Allow; ReadProperty; None; None
Попередження: Одна або кілька групових записів управління доступом (ACE) не готові.
попередження
Перевірити Дозволи для CN = RTC
Service, CN = Services, CN = Configuration, DC = (Моє ім'я домену), DC = local
Перевірити Дозволи для ConfigurationContainer
Перевірити Дозволи для RootDomainSystemContainer
Відразу хочу сказати що справа не в сервері тому спробував прикрутити його і до іншого сервера
і просто видалити з топології сервер довірених додатків і відновити попередню топологію без
цього сервера, тепер завжди видається таке повідомлення.
У чому може бути проблема і критична чи?
Не підкажете …
З повагою В'ячеслав.
Віктор, поправте імена доменів в другому абзаці - у Вас замість них імена контролерів написані