Remote Desktop 2019 — профили и миграция


В начале февраля выбрал для пробы один узел терминальной фермы на Windows Server 2012 R2 и запустил обновление до Windows Server 2019. Февраль на исходе, я в отпуске, катюсь на горных лыжах, а миграция всё ещё идёт: на ферме всего навсего пара тысяч с хвостиком профилей.

В общем, это совсем не рабочий сценарий.

Единственный вариант ускорить процесс это удалить все профили перед миграцией. Это можно сделать простым скриптом, который использует WMI Win32_UserProfile. После обновления профилей миграция пролетит быстро.

Что если профили содержат важную информацию и вам нужно всё же перенести её в новые профили? Тут вам придётся разработать план работ, который отражает вашу конкретную конфигурацию. Ничего универсального не существует (если только что-то коммерческое).

Если у вас терминальная ферма и профили лежат на шаре, то удаление вышеупомянутым скриптом затронет только локальные копии, на шаре информация сохранится.

Если профили только локальные (один сервер), то придется сделать их копию.

Если у вас была настроена переадресация папок профиля спомощью групповых политик, то после создания новых профилей переадресация восстановится, и пользователи увидят свои файлы. Это удобно для упрощения миграции.

Если вы используете персональные виртуальные диски для профилей пользователей терминальной фермы, то опять у вас много забот, и нужен специальный план.

Кстати, профили теперь имеют суффикс V6. Да, Windows 10 начала с V5, а теперь уже V6. Какая-то бесконечная миграция профилей.

Подробная история профилей Windows https://www.ivanti.com/blog/a-brief-history-of-windows-profiles

Официальная статья на эту тему https://support.microsoft.com/en-us/help/3056198/roaming-user-profiles-versioning-in-windows-10-and-windows-server

Реклама

Remote Desktop 2019 – Проблема с перемещаемыми профилями


После обновления терминальной фермы до версии 2019 появилась небольшая, но неприятная проблема синхронизации профилей.

Как это проявляется:

— при завершении сеанса пользователи стали получать сообщение, что их профиль не до конца синхронизирован

— в логах появились сообщения User Profile General с номером Event Id 1509 и Winlogon с номером Event Id 6001

Windows cannot copy file \\?\C:\Users\user\AppData\Roaming\Microsoft\Search\Data\Applications\S-1-5-21-538639244-1736677612-1463291260-1131 to location \\?\UNC\domain\share\user.BIS.V6\AppData\Roaming\Microsoft\Search\Data\Applications\S-1-5-21-538639244-1736776612-1463291260-1131. This error may be caused by network problems or insufficient security rights.

 DETAIL — Access is denied.

Причина

Причина в том, что на серверах версии Windows Server 2012 R2 нет предустановленного сервиса Windows Search (если он нужен, то необходимо установить эту дополнительную компоненту), а с версии Windows Server 2016 этот сервис установлен. Только на 2016 он по умолчанию выключен, а на 2019 он включен. После обновления до 2019 мы внезапно получаем запущенный Windows Search сервис. Этот сервис создает в профиле пользователя индексные файлы и не закрывает их, когда пользователь закрывает сеанс, и, более того, ставит на них особые права доступа, в результате эти индексные файлы не могут быть скопированы на шару во время синхронизации профиля.

Лечение

  1. Выключить сервис Windows Search групповой политикой.
    1. Если ферма новая, то этого достаточно, т.к. профили пользователей не будут содержать индексных файлов.
    2. Если профили уже созданы, то они содержат индексные файлы и проблема остается – нужно создавать политику/скрипт удаления этих паразитных файлов.
  2. Настроить исключения (рекомендую)
    1. Выключение сервиса Windows Search может быть неудобно, если пользователи используют меню Старт и некоторые программы, которые требуют запущенного Windows Search. Если ферма используется для работы с Office и другими офисными программами, то Windows Search становится критически необходимым для удобной работы пользователей.
    2. Поэтому с помощью групповой политики настраиваем исключения папок, которые не должны копироваться при синхронизации профилей с шарой: User Configuration – Administrative Templates – System – User Profiles Prevent the following directories from roaming with the profile. Указываем AppData\Roaming\Microsoft\Search и применяем политику.
    3. После применения групповой политики она действует сразу без перезагрузки.

Remote Desktop – миграция на Windows Server 2019


  1. В документации как-то двусмысленно написано про обновление брокеров в конфигурации active-active: в одном месте – исключите из развертывания все брокеры кроме одного, в другом – обновляйте офлайн. Обновили так: у одного выключили сеть и обновили офлайн (включили только после завершения обновления второго брокера), второго обновили онлайн (с подключенной сетью) – никаких манипуляций с конфигурацией развертывания не делали.
  2. После обновления выяснилоcь, что сервис Remote Desktop сыпется и перезапускается со страшной скоростью. Это какая-то бага. Проблема провоцируется подключением к серверу брокера по RDP. Обходной путь: запретить через GPO протокол UPD в Remote Desktop Host на брокерах. После этого сервис перестал падать при подключении с Windows 10 (хотя вроде падает при подключении с Windows 7). Проблема отслеживается на форуме Technet.

Полезные ссылки (для 2016, но актуальны):

  1. https://blogs.technet.microsoft.com/tip_of_the_day/2017/01/30/rds-tip-of-the-day-upgrading-your-remote-desktop-services-deployments-to-windows-server-2016/
  2. https://docs.microsoft.com/en-us/windows-server/remote/remote-desktop-services/upgrade-to-rds

PS:

Ошибка падения сервиса:

Log Name:      Application
Source:        Application Error
Date:          04.02.2019 9:48:10
Event ID:      1000
Task Category: (100)
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      rdcb1.bis.bashtel.ru
Description:
Faulting application name: svchost.exe_TermService, version: 10.0.17763.1, time stamp: 0xb900eeff
Faulting module name: ntdll.dll, version: 10.0.17763.1, time stamp: 0xa369e897
Exception code: 0xc0000374
Fault offset: 0x00000000000fb349
Faulting process id: 0x1a64
Faulting application start time: 0x01d4bc421689ed0b
Faulting application path: C:\WINDOWS\System32\svchost.exe
Faulting module path: C:\WINDOWS\SYSTEM32\ntdll.dll
Report Id: 3dd20b15-d2e1-48b5-ab57-cf1cb821eb1b
Faulting package full name: 
Faulting package-relative application ID: 
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Application Error" />
    <EventID Qualifiers="0">1000</EventID>
    <Level>2</Level>
    <Task>100</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2019-02-04T04:48:10.524513800Z" />
    <EventRecordID>3268</EventRecordID>
    <Channel>Application</Channel>
    <Computer>rdcb1.bis.bashtel.ru</Computer>
    <Security />
  </System>
  <EventData>
    <Data>svchost.exe_TermService</Data>
    <Data>10.0.17763.1</Data>
    <Data>b900eeff</Data>
    <Data>ntdll.dll</Data>
    <Data>10.0.17763.1</Data>
    <Data>a369e897</Data>
    <Data>c0000374</Data>
    <Data>00000000000fb349</Data>
    <Data>1a64</Data>
    <Data>01d4bc421689ed0b</Data>
    <Data>C:\WINDOWS\System32\svchost.exe</Data>
    <Data>C:\WINDOWS\SYSTEM32\ntdll.dll</Data>
    <Data>3dd20b15-d2e1-48b5-ab57-cf1cb821eb1b</Data>
    <Data>
    </Data>
    <Data>
    </Data>
  </EventData>
</Event>

Log Name:      Application
Source:        Application Error
Date:          04.02.2019 9:21:40
Event ID:      1000
Task Category: (100)
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      rdcb1.bis.bashtel.ru
Description:
Faulting application name: svchost.exe_TermService, version: 10.0.17763.1, time stamp: 0xb900eeff
Faulting module name: RDPBASE.dll, version: 10.0.17763.1, time stamp: 0x2e058d64
Exception code: 0xc0000005
Fault offset: 0x00000000000de496
Faulting process id: 0xf04
Faulting application start time: 0x01d4bc40fa908148
Faulting application path: C:\WINDOWS\System32\svchost.exe
Faulting module path: C:\WINDOWS\system32\RDPBASE.dll
Report Id: 045e21ce-373b-402e-bad2-aca8a3af462d
Faulting package full name: 
Faulting package-relative application ID: 
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="Application Error" />
    <EventID Qualifiers="0">1000</EventID>
    <Level>2</Level>
    <Task>100</Task>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2019-02-04T04:21:40.086665100Z" />
    <EventRecordID>2864</EventRecordID>
    <Channel>Application</Channel>
    <Computer>rdcb1.bis.bashtel.ru</Computer>
    <Security />
  </System>
  <EventData>
    <Data>svchost.exe_TermService</Data>
    <Data>10.0.17763.1</Data>
    <Data>b900eeff</Data>
    <Data>RDPBASE.dll</Data>
    <Data>10.0.17763.1</Data>
    <Data>2e058d64</Data>
    <Data>c0000005</Data>
    <Data>00000000000de496</Data>
    <Data>f04</Data>
    <Data>01d4bc40fa908148</Data>
    <Data>C:\WINDOWS\System32\svchost.exe</Data>
    <Data>C:\WINDOWS\system32\RDPBASE.dll</Data>
    <Data>045e21ce-373b-402e-bad2-aca8a3af462d</Data>
    <Data>
    </Data>
    <Data>
    </Data>
  </EventData>
</Event>