На терминальном сервере Windows Server 2019 не работает поиск в Outlook и проводнике: индексирование выключается после установки роли RDS

Что было. После переезда терминальных серверов с Windows Server 2016 на 2019 пользователи потеряли поиск: в Outlook индексация «никогда не завершается», в параметрах индексирования «0 элементов, индексирование завершено», перестроение индекса ничего не даёт. Профили пользователей хранятся на дисках профилей.

Почему. В Windows Server 2019 сменилась модель поиска: вместо одного общего каталога появился индекс на каждого пользователя. Вместе с ролью узла сеансов RDS это сочетание работало плохо: чистый сервер 2019 индексирует, а после добавления роли RDS индексирование останавливается. Производитель признал ошибку, участники сообщали о тестовом исправлении, но публичного исправления в теме так и не появилось; администраторы пользовались обходом.

Обход, подтверждённый участниками.

  1. Включить (или явно задать) режим индекса на каждого пользователя:
    reg add "HKLM\SOFTWARE\Microsoft\Windows Search" /v EnablePerUserCatalog /t REG_DWORD /d 1 /f
    Restart-Service WSearch -Force
    
    При обратной проблеме (индекс на пользователя есть, но не заполняется) некоторые администраторы, наоборот, возвращали общий каталог значением 0; какой из вариантов сработает, зависит от сборки и профилей, поэтому пробовать оба на тестовой машине.
  2. Перестроить индекс конкретного пользователя без сброса всего сервера: в его ветке HKEY_USERS\<SID>\Software\Microsoft\Windows Search создать RebuildIndex = 1 (DWORD), перезайти.
  3. Убедиться, что служба Windows Search в режиме «Автоматически (отложенный запуск)» и не отключена политикой «Разрешить использование индексирования»; на RDS её часто отключают ради экономии ресурсов, и тогда Outlook честно ничего не найдёт.

Что важно для дисков профилей. Индекс на пользователя лежит в его профиле; при выгрузке диска профиля индекс должен уезжать вместе с ним, иначе каждый вход начинается с пустого каталога. Проверить, что в исключения профилей не попала папка AppData\Roaming\Microsoft\Search. У сторонних решений для профилей для этого есть отдельные настройки роуминга поиска, и они несовместимы с некоторыми режимами поиска 2019.

Как понять, что у вас именно это. «Параметры индексирования» показывают 0 элементов при работающей службе, журнал Application без ошибок службы поиска, а на сервере без роли RDS та же сборка индексирует. Если же в журнале есть ошибки 3036/3083/7042 от Search, это уже повреждённый индекс, лечится удалением C:\ProgramData\Microsoft\Search\Data при остановленной службе.

Архитектура поиска описана в документации Microsoft.