Терминальная ферма. Мои предпочтения в групповых политиках.

Remote Desktop Services

Введение.

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

Таблица с кратким описанием.

Компьютер:

RDS_PC_DeleteUserAppContainersOnLogoffОчищает записи в брандмауэре, которые создаются пользователями при входе. Иначе переполнение их приводит к деградации сервера, неуправляемости, не рабочей кнопки пуска, черному экрану.
RDS_PC_Disable_Per-User servicesУдаляет не нужные пользовательские сервисы, которые создаются при входе. Приводит к переполнению буфера services.msc и не дает управлять.
RDS_PC_DisableTaskOffloadОтключает выгрузку задач процессора на сетевой адаптер.
RDS_PC_DefaultAppAssociationsАссоциация расширений файлов с программами.
RDS_PC_IgnoreRemoteKeyboardLayoutОтключение проброса языковой раскладки по RDP с локального ПК.
RDS_PC_ShadowFullAccessРазрешение для теневого управления без действия пользователя.
RDS_PC_StartLayoutУстановка макета пуск меню.
RDS_User Group Policy Loopback Processing modeЗамыкание групповой политики. Применение политик пользователя в OU компьютера.
RDS_PC_1C_SettingsПрописывание баз 1С.

Пользователь:

RDS_User_1CClearCacheLogonЧистка кешью 1С.
RDS_User_ColorProfileИсправление бага, когда стандартный просмотрщик изображений говорит о недостаточности оперативной памяти.
RDS_User_HideLocalDrivesСкрытие локальных дисков.
RDS_User_HideNetworkIconСкрытие значка сети в проводнике.
RDS_User_HideNotificationAreaСкрытие значка и отключение уведомлений.
RDS_User_RemoveVolumeIconУдаление значка звука.
RDS_User_SettingsOutlookНастройки Outlook.
RDS_User_WindowTitleBarColorВыделение активного проводника цветом.

Обзор политик

RDS_PC_DeleteUserAppContainersOnLogoff: 27 ноября 2018 г. — KB4467684 (сборка ОС 14393.2639)
Обсуждение: Windows Servr 2016 RDSH – Firewall rules created at every login.

Обязательно добавляем этот ключ в реестр, чтоб не было проблем с производительностью.

RDS_PC_Disable_Per-User services:
Источник: Службы для отдельных пользователей в Windows 10 и Windows Server

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

Путь раздела:

SYSTEM\CurrentControlSet\Services\CaptureService
SYSTEM\CurrentControlSet\Services\cbdhsvc
SYSTEM\CurrentControlSet\Services\CDPSvc
SYSTEM\CurrentControlSet\Services\CDPUserSvc
SYSTEM\CurrentControlSet\Services\ConsentUxUserSvc
SYSTEM\CurrentControlSet\Services\DevicePickerUserSvc
SYSTEM\CurrentControlSet\Services\DevicesFlowUserSvc
SYSTEM\CurrentControlSet\Services\PimIndexMaintenanceSvc
SYSTEM\CurrentControlSet\Services\PrintWorkflowUserSvc
SYSTEM\CurrentControlSet\Services\UnistoreSvc
SYSTEM\CurrentControlSet\Services\UserDataSvc
SYSTEM\CurrentControlSet\Services\WpnUserService

Имя параметра: UserServiceFlags

Тип параметра: REG_DWORD
Значение: 00000000

RDS_PC_DisableTaskOffload: Определенные сетевые адаптеры поддерживают обработку некоторых задач процессора. Лично я не доверяю это делать сетевому адаптеру. После выключения я как минимум заметил, что вход по RDP стал происходить быстрей. Пример отключения с помощью групповой политики:

КустHKEY_LOCAL_MACHINE
Путь к разделуSYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Имя параметраDisableTaskOffload
Тип параметраREG_DWORD
Значение0x1 (1)

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

Что я делаю ? Захожу на терминальный сервер со всем установленным ПО, настраиваю в настройках ассоциацию и произвожу экспорт настроек: Экспорт или импорт сопоставлений приложений по умолчанию

Далее в сетевую папку кладу полученный xml файл и настраиваю групповую политику: Установка браузера по умолчанию с помощью групповой политики

Получается некий эталонный конфиг с ассоциацией по умолчанию. Его всегда можно изменять на ходу и пользователи будут обновлять ассоциацию по умолчанию.

RDS_PC_IgnoreRemoteKeyboardLayout: Бывает неприятная ситуация, что при каких-то условиях пробрасывается раскладка клавиатуры с локалки по RDP и у Вас выходит три языка, приходиться дополнительно с помощью сочетания клавиш CTRL+SHIFT и CTRL+SHIFT переключать язык, что не удобно. Ключ в реестре запрещает перенаправлять локальную раскладку по RDP.

КустHKEY_LOCAL_MACHINE
Путь к разделуSYSTEM\CurrentControlSet\Control\Keyboard Layout
Имя параметраIgnoreRemoteKeyboardLayout
Тип параметраREG_DWORD
Значение0x1 (1)

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

Конфигурация компьютера -> Политики -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Подключения -> Устанавливает правила удаленного управления для пользовательских сеансов служб удаленных рабочих столов.

RDS_PC_StartLayout: Немного украшаем макет панели задач и пуска. Пример моего макета:

Я закрепил некоторые программы на панели задач и в пуске вывел часто используемое ПО. Как это делается ?
Настройка и экспорт макета меню “Пуск” и начального экрана

По аналогии с ассоциацией файлов по умолчанию. Делаете макет, экспортируете и применяете политику: Настройка начального экрана и панели задач Windows 10 с помощью групповой политики

Но это касается только пуска. Для панели задач нужно еще дополнительно добавлять код: Настройка панели задач Windows10

Пример моего xml файла:

StartLayout.xml
<LayoutModificationTemplate xmlns:defaultlayout=”http://schemas.microsoft.com/Start/2014/FullDefaultLayout” xmlns:start=”http://schemas.microsoft.com/Start/2014/StartLayout” Version=”1″ xmlns=”http://schemas.microsoft.com/Start/2014/LayoutModification”>
<LayoutOptions StartTileGroupCellWidth=”6″ />
<DefaultLayoutOverride>
<StartLayoutCollection>
<defaultlayout:StartLayout GroupCellWidth=”6″>
<start:Group Name=””>
<start:DesktopApplicationTile Size=”2×2″ Column=”0″ Row=”0″ DesktopApplicationLinkPath=”%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Outlook.lnk” />
<start:DesktopApplicationTile Size=”2×2″ Column=”2″ Row=”0″ DesktopApplicationLinkPath=”%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Excel.lnk” />
<start:DesktopApplicationTile Size=”2×2″ Column=”4″ Row=”0″ DesktopApplicationLinkPath=”%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Word.lnk” />
</start:Group>
<start:Group Name=””>
<start:DesktopApplicationTile Size=”2×2″ Column=”0″ Row=”0″ DesktopApplicationLinkPath=”%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Google Chrome.lnk” />
<start:DesktopApplicationTile Size=”2×2″ Column=”2″ Row=”0″ DesktopApplicationID=”Microsoft.InternetExplorer.Default” />
<start:DesktopApplicationTile Size=”2×2″ Column=”4″ Row=”0″ DesktopApplicationID=”1cv8″ />
</start:Group>
<start:Group Name=””>
<start:DesktopApplicationTile Size=”2×2″ Column=”0″ Row=”0″ DesktopApplicationID=”{6D809377-6AF0-444B-8957-A3773F02200E}\Notepad++\notepad++.exe” />
<start:DesktopApplicationTile Size=”2×2″ Column=”2″ Row=”0″ DesktopApplicationLinkPath=”%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Paint.lnk” />
<start:DesktopApplicationTile Size=”2×2″ Column=”4″ Row=”0″ DesktopApplicationLinkPath=”%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Snipping Tool.lnk” />
</start:Group>
<start:Group Name=””>
<start:DesktopApplicationTile Size=”2×2″ Column=”0″ Row=”0″ DesktopApplicationLinkPath=”%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Calculator.lnk” />
<start:DesktopApplicationTile Size=”2×2″ Column=”2″ Row=”0″ DesktopApplicationID=”Microsoft.Windows.ControlPanel” />
<start:DesktopApplicationTile Size=”2×2″ Column=”4″ Row=”0″ DesktopApplicationID=”C:\Taxcom\Docliner\Client\Docliner.exe” />
</start:Group>
</defaultlayout:StartLayout>
</StartLayoutCollection>
</DefaultLayoutOverride>
<CustomTaskbarLayoutCollection PinListPlacement=”Replace”
xmlns:taskbar=”http://schemas.microsoft.com/Start/2014/TaskbarLayout”>
<defaultlayout:TaskbarLayout>
<taskbar:TaskbarPinList>
<taskbar:DesktopApp DesktopApplicationLinkPath=”%APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools\File Explorer.lnk” />
<taskbar:DesktopApp DesktopApplicationLinkPath=”%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Google Chrome.lnk” />
<taskbar:DesktopApp DesktopApplicationLinkPath=”%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Outlook.lnk” />
<taskbar:DesktopApp DesktopApplicationLinkPath=”%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\1C Предприятие.lnk” />
<taskbar:DesktopApp DesktopApplicationLinkPath=”%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Calculator.lnk” />
<taskbar:DesktopApp DesktopApplicationLinkPath=”%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs\Accessories\Snipping Tool.lnk” />
</taskbar:TaskbarPinList>
</defaultlayout:TaskbarLayout>
</CustomTaskbarLayoutCollection>
</LayoutModificationTemplate>

RDS_User Group Policy Loopback Processing mode: Обработка циклов групповой политики

Данную политику я применяю в режиме слияния, чтоб централизованно хранить в одном OU необходимые мне политики как для пользователя, так и для компьютера, исключительно в рамках терминального сервера.

RDS_PC_1C_Settings: Куда же без нашей любимой 1С и конечно пользователям как-то надо прописывать базы. Есть почитать интернеты, есть не один способ, но я напишу самый универсальный.

Нам нужно заменить конфиг C:\Program Files\1cv8\common\1CESCmn.cfg

ДействиеЗаменить
Исходные файлы\\resoleasing.com\SYSVOL\resoleasing.com\scripts\RDS\1C\1CESCmn*
Конечная папкаC:\Program Files\1cv8\common
Подавлять ошибки при действиях с отдельными файламиОтключено

В нем указываем путь к конфигу, в котором прописываем базы:

CommonInfoBases=\resoleasing.com\SYSVOL\resoleasing.com\scripts\RDS\1C\ibases.v8i

И соответственно в сетевой папке, лежит ibases.v8i со списком баз. Таким образом мы всегда можем поддерживать актуальный список баз для всех пользователей.

RDS_User_1CClearCacheLogon: Данный скрипт я использую в logon, чтоб чистить кэш 1С. Как знаете, периодически он вызывает различные ошибки при запуске базы, да и накапливает лишний мусор.

Get-ChildItem "C:\$env:HOMEPATH\AppData\Roaming\1C\1cv8\*","C:\$env:HOMEPATH\AppData\Local\1C\1cv8\*" | Where {$_.Name -as [guid]} |Remove-Item -Force -Recurse

RDS_User_ColorProfile: Если не ошибаюсь, с Windows Server 2016 отключили стандартное приложение для просмотра фото, но как знаете, с помощью реестра оно включается. Однако периодически Вы получаете ошибку:

Программа просмотра фотографий Windows не может отобразить это изображение, поскольку на вашем компьютере может быть недостаточно памяти. Закройте некоторые программы, которые вы не используете, или освободите место на жестком диске (если оно почти заполнено), а затем повторите попытку.

Данное изменение в реестре исправляет эту проблему:

КустHKEY_CURRENT_USER
Путь к разделуSoftware\Microsoft\Windows NT\CurrentVersion\ICM\RegisteredProfiles
Имя параметраsRGB
Тип параметраREG_SZ
ЗначениеRSWOP.icm

RDS_User_HideLocalDrives: Я ограничиваю видимость локальных дисков. Пользователю это не зачем и не мешается в проводнике. Использование объектов групповой политики для сокрытия указанных дисков

RDS_User_SettingsOutlook: Я включаю политику:

Автоматическая настройка профиля на основе основного SMTP-адреса Active Directory

Таким образом, при первом запуске Outlook, он конфигурируется полностью автоматически.

Использовать режим кэширования данных Exchange для новых и существующих профилей Outlook

Режим кеширования на терминальных серверах я отключаю.

Так же, чтоб служба автообнаружения не спрашивала, доверяю ли я этому серверу, свои сервера я добавляю как доверенные:

Autodiscover: Some quick methods to get it working - HowTo-Outlook
КустHKEY_CURRENT_USER
Путь к разделуSOFTWARE\Microsoft\Office\16.0\Outlook\AutoDiscover\RedirectServers
Имя параметраDattum-ex-01.resoleasing.com
Тип параметраREG_SZ
Значение0

RDS_User_WindowTitleBarColor: Маленькая, но приятная мелочь. С Windows Server 2016 почему-то проводник стал сливаться с другими папками. Нет границ и когда открыто много папок, это визуально как мне кажется, не приятно. Потому я просто включаю настройку:

С помощью реестра:

КустHKEY_CURRENT_USER
Путь к разделуSoftware\Microsoft\Windows\DWM
Имя параметраColorPrevalence
Тип параметраREG_DWORD
Значение0x1 (1)

На этом всё. Здесь я описал как я считаю одни из самых важных политик, которые должны применяться для терминального сервера, чтоб автоматизировать некоторые процессы и не было необходимости дополнительно настраивать что-то в каждом сеансе. Я опустил более подробное некоторых политик, так как они просты, а так же часть, которая используется конкретно под мою инфраструктуру. Интересно было бы послушать, что Вы используете на своих терминальных серверах.

Спасибо, что дочитали. С Уважением, Андрей.
Mihalevskiy.com
Добавить комментарий

  1. NONAME

    Использую политику макет меню пуск и сопоставление типов файлов,ни работают ни в какую(политики не применяются gpresult /r),политики прямо в том OU где и расположены терминалы
    использую для фермы win server 2019 с UPD
    В какую сторону копать/cмотреть?

    Ответить
    1. mihalevskiy автор

      Здравствуйте. А политику для компьютера создаете ? У Вас в одном сайте всё ? Проблем с контроллером нет ? cmd от админа dcdiag /q

      Ответить
      1. N0NAME

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

        Ответить