Устранение неполадок RDS в Windows Server 2012

Опубликовано: 21 Апреля, 2023


Введение


После изменения терминологии, произошедшего с Window Server 2008 R2, термин службы терминалов больше не применяется, а термин TS заменен на RD. Тот факт, что люди по-прежнему ссылаются на службы терминалов, несмотря на то, что они используют редакцию R2 Windows Server 2008, по-прежнему часто сбивает с толку. С изменением терминологии также появился расширенный набор функций и возможностей. То, что называлось службами терминалов в Windows Server 2003, не является тем, что мы знаем в наши дни как службы удаленных рабочих столов. В Windows Server 2008 были введены не только новые роли и функции (диспетчер сервера), но и службы удаленных рабочих столов (RDS) теперь также представлены в двух вариантах. Существует инфраструктура виртуальных рабочих столов (VDI), основанная на роли узла виртуализации удаленных рабочих столов, и виртуализация сеансов, основанная на роли узла сеансов удаленных рабочих столов. Обе эти разновидности, конечно же, имеют много общего в глобальном развертывании RDS. Такие роли, как посредник подключений к удаленному рабочему столу, веб-доступ к удаленному рабочему столу и т. д., могут использоваться как для VDI, так и для сценариев виртуализации сеансов. В этой статье мы рассмотрим некоторые способы сбора ценной информации для устранения неполадок в средах RDS при работе с Windows Server 2012 (до сих пор Windows Server 8 Beta).


Устранение неполадок установки стандартного сценария


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


Основная часть этой статьи будет посвящена файлу журнала, который содержит информацию о процессе установки и настройки. Этот файл журнала называется RDMSDeploymentUI.txt. Вы можете найти этот файл журнала на машине, на которой вы выполняли развертывание RDMS. RDMS расшифровывается как Службы управления удаленными рабочими столами и представляет собой новый «плагин», который был добавлен в совершенно новую консоль Windows 2012 Server Manager. Папка, в которой находится этот файл журнала, — %windir%Logs (например, C:WindowsLogs).


В своей лабораторной среде я выполнил развертывание платформы RDS на основе сценария. Как вы, возможно, помните из моих предыдущих блогов и статей, развертывание на основе сценариев — это новая функция в Windows Server 2012, которая доступна в качестве опции рядом с «классическим» развертыванием на основе ролей. Развертывание на основе сценария — это установка полного сценария вместо отдельных ролей. Существует два типа развертываний на основе сценариев. Существует быстрое развертывание, которое устанавливает все роли (узел сеансов удаленных рабочих столов, веб-доступ к удаленным рабочим столам и посредник подключений к удаленному рабочему столу) на одном сервере, что идеально подходит для сред LAB и POC и т. д. три упомянутых ранее вы хотите установить на какие серверы. Развертывание, которое я использовал для этой статьи, является стандартным развертыванием, распределенным по нескольким серверам.


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


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


Информация о ServerManager.exe: 0:” 03:51:44.30: DeploymentContext: добавьте сервер «RDSH01.lab.local» в SMPool.
Информация о ServerManager.exe: 0:” 03:51:44.30: DeploymentContext: добавьте сервер 'RDCB01.lab.local' в SMPool.
Информация о ServerManager.exe: 0:” 03:51:44.30: DeploymentContext: добавьте сервер 'RDCB02.lab.local' в SMPool.


Остальные записи журнала в этой статье также начинаются с «Информация о ServerManager.exe: 0:» Но я пропустил это, чтобы освободить место. Кроме того, да, я мог бы, конечно, также опустить время, но я оставил это намеренно, чтобы дать вам некоторое представление о том, насколько быстрым на самом деле является развертывание.


Затем мы видим, что программа установки проверяет состояние выбранных серверов. В моем случае я выбрал установку посредника подключений к удаленному рабочему столу и веб-доступа к удаленному рабочему столу на одном сервере (RDCB01), поэтому он дважды отображается в файле журнала. Роль узла сеансов удаленных рабочих столов установлена на RDSH01.


03:53:14.72: CompatibilityHelper.VerifyCompatibility:: hostName:RDCB01.lab.local
03:53:21.85: RdmsUI: RDCB01.lab.local доступен.
03:53:22.80: RdmsUI: RDCB01.lab.local присоединен к домену.
03:53:24.38: RdmsUI: Текущий пользователь является администратором на удаленном сервере.
03:53:25.46: RdmsUI: версия RDCB01.lab.local — Win8 или выше.
03:53:27.58: RdmsUI: RDCB01.lab.local можно включить, чтобы разрешить подключения TS.
03:53:38.72: CompatibilityHelper.VerifyCompatibility:: hostName:RDCB01.lab.local
03:53:40.54: RdmsUI: RDCB01.lab.local доступен.
03:53:41.42: RdmsUI: RDCB01.lab.local присоединен к домену.
03:53:42.32: RdmsUI: Текущий пользователь является администратором на удаленном сервере.
03:53:43.30: RdmsUI: версия RDCB01.lab.local — Win8 или выше.
03:53:51.48: CompatibilityHelper.VerifyCompatibility:: hostName:RDSH01.lab.local
03:53:53.77: RdmsUI: RDSH01.lab.local доступен.
03:53:54.92: RdmsUI: RDSH01.lab.local присоединен к домену.
03:53:56.16: RdmsUI: Текущий пользователь является администратором на удаленном сервере.
03:53:57.16: RdmsUI: версия RDSH01.lab.local — Win8 или выше.
03:54:08.56: RdmsUI: на выбранном сервере RDSH01.lab.local нет ожидающих перезагрузки.


После этого параметры и выбор, сделанный в мастере, суммируются.


03:54:36.86: RdmsUI: выбранные пользователем параметры для развертывания сценария общего рабочего стола.
03:54:36.86: RdmsUI: сервер Rdms уже существует: False
03:54:36.86: RdmsUI: сервер Rdms: RDCB01.lab.local
03:54:36.86: RdmsUI: сервер веб-доступа уже существует на сервере Rdms: False
03:54:36.86: RdmsUI: сервер веб-доступа: RDCB01.lab.local
03:54:36.86: RdmsUI: Серверы узлов сеансов удаленных рабочих столов:
03:54:36.86: RdmsUI: RDSH01.lab.local
03:54:36.91: RdmsUI: Добавление сервера RDCB01.lab.local в список обновлений SM
03:54:37.03: RdmsUI: выбранный сервер RDSH01.lab.local является локальным.
03:54:37.03: RdmsUI: Добавление сервера RDSH01.lab.local в список обновлений SM
03:54:37.04: RdmsUI: Представление создано
03:54:37.05: InstallationCompletionViewModel.Configure:: wizardInput.ManagementServer:RDCB01.lab.local
03:54:37.07: RdmsUI: выбранный сервер RDSH01.lab.local является локальным.
03:54:37.08: RdmsUI: для выполнения этого развертывания требуется локальная перезагрузка
03:54:37.09: RdmsUI: RDManagementSet-RDSHDeployment -RDMSServer RDCB01.lab.local -RDSHServers System.String[] -RDWebAccessServers System.String[]


Затем программа установки запускает развертывание, сначала устанавливая роль RD Session Hole. Эта роль устанавливается первой, потому что она (да еще!) требует перезагрузки. Вы можете прочитать все шаги установки, следуя правилам в файле журнала, который начинается с CommandLetExecutor. Очевидно, что записей много, но я скопировал несколько ниже, чтобы дать вам представление о том, как это выглядит.


03:54:52.52: CommandLetExecutor: получен ход выполнения задания для командлета: RDManagementSet-RDSHDeployment — Write-Debug — выполнено -1%
03:54:52.55: CommandLetExecutor: получен ход выполнения задания для командлета: RDManagementSet-RDSHDeployment — установка RDMS — завершено 0 %
03:55:11.42: CommandLetExecutor: получен ход выполнения задания для командлета: RDManagementSet-RDSHDeployment — начать установку… — выполнено 1%
03:56:02.02: CommandLetExecutor: получен ход выполнения задания для командлета: RDManagementSet-RDSHDeployment — начать установку… — завершено 100 %


После установки роли RDSH и выполнения перезагрузки мы видим разрыв во времени (жирный текст). Это не потому, что установка заняла так много времени, но я действительно подождал некоторое время, прежде чем снова войти в систему после перезагрузки, и мастер не продолжит работу, пока вы действительно не войдете в систему.


03:57:48.07 : CommandLetExecutor: Ход выполнения задания получен для командлета: RDManagementSet-RDSHDeployment — перезагрузить локальный компьютер — выполнено -1%
04:20:47.80: RDWorkloadWizardPlugin: IRolePlugin.Initialized…


Когда мастер продолжит работу, мы увидим записи журнала, которые показывают, что две другие роли (посредник подключения к удаленному рабочему столу и веб-доступ к удаленному рабочему столу) также добавлены. Опять же, всего несколько записей ниже, чтобы дать вам представление


04:21:43.58: ScenarioBasedDeployment: получен ход выполнения задания для командлета: настроить сервер RDWA — выполнено -1%
04:21:43.58: ScenarioBasedDeployment: получен ход выполнения задания для командлета: Добавить сервер веб-доступа к удаленным рабочим столам — выполнено -1%
04:21:44.85: ScenarioBasedDeployment: получен ход выполнения задания для командлета: добавление сервера веб-доступа к удаленным рабочим столам в развертывание — выполнено 14 %.
04:21:44.85: ScenarioBasedDeployment: получен ход выполнения задания для командлета: добавление сервера веб-доступа к удаленным рабочим столам в развертывание — выполнено 14 %.


04:21:26.82: ScenarioBasedDeployment: получен ход выполнения задания для командлета: добавление сервера посредника подключений к удаленному рабочему столу в развертывание — выполнено 20 %.
04:21:26.82: ScenarioBasedDeployment: получен ход выполнения задания для командлета: добавление сервера посредника подключений к удаленному рабочему столу в развертывание — выполнено 20 %.
04:21:33.84: ScenarioBasedDeployment: получен ход выполнения задания для командлета: добавление сервера посредника подключений к удаленному рабочему столу в развертывание — выполнено 40 %.


Далее мы видим сводку о том, какие роли были установлены на каких серверах.


04:22:04.35: RDMachinePool: Обновление серверов машинного пула RDS…
04:22:04.35: RDMachinePool: сервер RDCB01.lab.local уже входит в пул серверных машин. Обновление информации о роли
04:22:04.35: RDMachinePool: Роли/функции RDS установлены на сервере RDCB01.lab.local
04:22:04.35: RDMachinePool: роль RemoteDesktop установлена
04:22:04.35: RDMachinePool: роль CB и RDMS установлена
04:22:04.35: RDMachinePool: роль RDWA установлена
04:22:04.35: RDMachinePool: сервер RDSH01.lab.local уже входит в пул серверных машин. Обновление информации о роли
04:22:04.35: RDMachinePool: Роли/функции RDS установлены на сервере RDSH01.lab.local
04:22:04.35: RDMachinePool: роль RemoteDesktop установлена
04:22:04.35: RDMachinePool: роль RDSH установлена


После этого диспетчер серверов обновляется, и на все серверы в рамках сценария отправляется сигнал пульса.


04:22:09.47: RDMSHeartbeat: Служба RDMS запущена? Истинный
04:22:09.47: RDMSHeartbeat: Служба WinRM запущена? Истинный
04:22:09.47: RDMSHeartbeat: Служба MSSQL$MICROSOFT##WID запущена? Истинный
04:22:09.47: RDMSHeartbeat: Служба TScPubRPC запущена? Истинный
04:22:09.47: RDMSHeartbeat: Служба WinMgmt запущена? Истинный
04:22:09.47: RDMSHeartbeat: все службы работают
04:22:09.47: RDMSHeartbeat: проверять сердцебиение каждые 5 минут


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


Устранение неполадок при создании коллекции сеансов


Создание коллекции сеансов также регистрируется в том же файле журнала. Чтобы проанализировать шаги, предпринятые при создании коллекции сеансов, откройте файл журнала и найдите «RdmsUI: RDManagementNew-RDSHCollection». Вы увидите что-то вроде следующей строки:


Чтобы просмотреть подробности, связанные с созданием коллекции сеансов, найдите в файле журнала «RdmsUI: RDManagementNew-RDSHCollection».


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


04:27:41.75: CommandLetExecutor: Получен ход выполнения задания для командлета: RDManagementNew-RDSHCollection — Ход выполнения: 10 — выполнено -1%


Событие, указывающее на завершение создания коллекции сессий, указано ниже.


04:28:21.05: RDWizardManager: Мастер создания коллекции завершен.


Обратите внимание, что если вам нужно найти в журнале имя вашей коллекции сеансов, оно будет сокращено до 16 символов внутри файла журнала.


Устранение неполадок публикации удаленного приложения


Шаги, предпринимаемые при публикации удаленного приложения, также регистрируются в том же файле журнала. Чтобы проанализировать шаги, предпринятые во время публикации RemoteApp, найдите в файле журнала событие «RDWizardManager: запускается мастер публикации RemoteApp Programs…».


Сначала вы увидите некоторые события прогресса, которые указывают на то, что мастер отслеживает возможные приложения из меню «Пуск» и т. д.


Ход выполнения задания получен для командлета: RDManagementGet-StartMenuApplications — Get-StartMenuApps — выполнено -1 %.


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


04:28:33.40: RdmsUI: 20 Приложения StartMenu загружаются с сервера RDSH01.lab.local


Приложения, выбранные в мастере, также регистрируются в файле журнала. Ниже приведена запись публикации calculate.exe, которая содержит все параметры (например, отображаемое имя, иконку и т. д.), необходимые для настройки.


04:29:07.28: RdmsUI: RDManagementPublish-RemoteApplication -RDMSServer RDCB01.lab.local -AppAlias calc -PoolName Wortell_sLab_Ses -DisplayName Calculator -AppPath C:Windowssystem32calc.exe -ShowInPortal 1 -CommandLineSetting 0 -IconContents Система.Byte[] -IconPath %windir%system32calc.exe -Folder $Null -VirtualPath %SYSTEMDRIVE%Windowssystem32calc.exe -SecurityDescriptor O:WDG:WDD:ARP(A;CIOI;CCLCSWLORCGR;;; S-1-5-21-3229057419-3596798998-590496206-1107) -VirtualMachine RDSH01.lab.local


После этого выполняются фактические шаги по публикации приложения, и оно заканчивается записью «успешно».


04:29:09.03: CommandLetExecutor: получен ход выполнения задания для командлета: RDManagementPublish-RemoteApplication — получение объекта пула RDSH — выполнено -1%
04:29:09.04: CommandLetExecutor: получен ход выполнения задания для командлета: RDManagementPublish-RemoteApplication — получение машин пула — выполнено -1%
04:29:09.04: CommandLetExecutor: получен ход выполнения задания для командлета: RDManagementPublish-RemoteApplication — получение машин пула — выполнено -1%
04:29:09.04: CommandLetExecutor: получен ход выполнения задания для командлета: RDManagementPublish-RemoteApplication — установить объект Win32_TSPublishedApplication на всех серверах — выполнено -1%
04:29:11.47: CommandLetExecutor: получен ход выполнения задания для командлета: RDManagementPublish-RemoteApplication — установить объект Win32_TSPublishedApplication на всех серверах — выполнено -1%
04:29:11.47: CommandLetExecutor: получен ход выполнения задания для командлета: RDManagementPublish-RemoteApplication — отменить публикацию удаленного рабочего стола — выполнено -1%
04:29:11.47: CommandLetExecutor: получен ход выполнения задания для командлета: RDManagementPublish-RemoteApplication — отменить публикацию удаленного рабочего стола — выполнено -1%
04:29:11.47: CommandLetExecutor: получен ход выполнения задания для командлета: RDManagementPublish-RemoteApplication — запись опубликованного объекта в RDMS — выполнено -1%
04:29:12.16: CommandLetExecutor: получен ход выполнения задания для командлета: RDManagementPublish-RemoteApplication — запись опубликованного объекта в RDMS — выполнено -1%
04:29:12.16: CommandLetExecutor: получен ход выполнения задания для командлета: RDManagementPublish-RemoteApplication — установка объектов FTA — выполнено -1%
04:29:12.16: CommandLetExecutor: получен ход выполнения задания для командлета: RDManagementPublish-RemoteApplication — установка объектов FTA — выполнено -1%
04:29:12.16: CommandLetExecutor: RDManagementPublish-RemoteApplication: выполнено успешно


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


04:29:17.91: RdmsUI: RdmsModel: Добавлен расчет приложения в коллекцию Wortell_sLab_Ses
04:29:17.91: RdmsUI: RdmsModel: Добавлено приложение iexplore в коллекцию Wortell_sLab_Ses
04:29:17.91: RdmsUI: RdmsModel: Добавлено приложение mspaint в коллекцию Wortell_sLab_Ses
04:29:17.91: RdmsUI: RdmsModel: Добавлено приложение wordpad в коллекцию Wortell_sLab_Ses


За ними следует сводка всех настроенных ассоциаций типов файлов (FTA). Я вставил несколько ниже здесь, чтобы дать вам представление.


04:29:17.91: RdmsUI: RdmsModel: Добавлен FTA.gif в приложение iexplore и коллекцию Wortell_sLab_Ses
04:29:17.94: RdmsUI: RdmsModel: Добавлен FTA.bmp в приложение mspaint и коллекцию Wortell_sLab_Ses
04:29:17.94: RdmsUI: RdmsModel: Добавлен FTA.docx в приложение wordpad и сборник Wortell_sLab_Ses


Вывод


Обширный файл журнала, поставляемый с подключаемым модулем служб управления удаленными рабочими столами для нового диспетчера Windows Server в Windows Server 2012, чрезвычайно полезен для отладки, когда что-то действительно пошло не так. Особенно теперь, когда мы будем использовать Scenario все больше и больше и, следовательно, будем устанавливать и настраивать удаленные серверы и роли с одной консоли. Я даже не показал вам все виды записей в логе, но в нем много полезной информации. Я мог бы написать вторую статью, чтобы глубже погрузиться в то, что может пойти не так во время развертывания, и как файл журнала покажет вам это.