Не удается завершить требуемую операцию поскольку службы удаленных рабочих столов сейчас заняты 1с

Обновлено: 07.07.2024

date

29.12.2020

directory

Windows Server 2012 R2, Windows Server 2016

comments

комментария 4

Периодически некоторые пользователи не могут залогиниться на сервера RDS фермы Windows Server через стандартный rdp клиент с ошибкой:

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

The task you are trying to do can

Также несколько раз встречали такую картину: на вкладке Users диспетчера задач RDS хоста имеется множество зависших сессией пользователей с именами (4) вместо username и со статусом Disconnected.

зависшие сессии (4) на rds терминальном сервере

Проблема встречается на всех версиях Windows Server: 2008 R2, 2012 R2, 2016 и 2019.

Ошибка может возникать по разным причинам:

  • Ошибка в работе службы удаленных рабочих столов;
  • Баг с процессом csrss.exe;
  • Проблема с профилем пользователя или со службой profsvc;
  • Нехватка оперативной памяти или дискового пространства на RDSH сервере;
  • Некорректные настройки групповых политик.

К сожалению, на данный момент нет официального решения от Microsoft, которое бы полностью решало проблему, всё сводится к устранению симптомов.

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

Убедитесь, что серверу хватает ресурсов, так как эта ошибка может возникать из-за нехватки оперативной памяти или дискового пространства. Проверьте загруженность оперативной памяти и достаточно ли свободного места на диске, где установлена операционная система (должно быть свободно хотя бы 1 GB). Также проверьте event log на предмет критических ошибок, связанных с RDS.

Если ресурсов хватает, переходим к следующему варианту.

Сначала попробуем найти и принудительно сбросить сессию пользователя, который не может зайти на RDS сервер. В диспетчере задач, на вкладке Users найдите нужного пользователя и через контекстное меню кликаем “Log off”. В большинстве случаев, этого достаточно, но иногда в диспетчере задач вы можете обнаружить множество зависших сессий с именем “(4)” вместо имени пользователя. Как правило в зависшей сессии будет присутствовать 4 процесса:

  • Client Server Runtime Process (csrss.exe)
  • Desktop Windows Manager (dwm.exe)
  • Windows Logon Application (winlogon.exe)
  • Windows Logon User Interface

В первую очередь попробуйте завершить все зависшие сессии с (4) через диспетчер задач, как описано выше. Если это не поможет, то лучше всего перезагрузить сервер, но зачастую такой возможности нет, поэтому пробуем решить проблему без перезагрузки:

  1. Запустите командную строку с правами администратора и введите: query session
    Она покажет всех пользователей и их сессии на терминальном сервере. В выводе команды есть 3 интересующих нас столбца: SESSIONNAME, USERNAME и ID. Найдите пользователя (4) и соответствующий ему ID, в данном примере ID 2. Нам нужно завершить процесс csrss.exe который работает под этой сессией, сначала найдем его.
  2. В командной строке введите: query process /id 2
    Команда выведет все процессы, которые запущены в этой сессии. Нам нужно найти процесс csrss.exe и соответствующий ему PID. В моём случае PID будет 5140. Нам нужно завершить этот процесс.
  3. Сверимся по диспетчеру задач. Откройте диспетчер задач, перейдите на вкладку Details и найдите нужный вам PID и процесс.Если нужный вам PID соответствует процессу csrss.exe, то завершите процесс через контекстное меню и End task, либо через командную строку: taskkill /F /PID 5140

Это нужно проделать с каждым пользователем “(4)”, если их несколько.

Если разлогинить “проблемного” пользователя через диспетчер задач не удалось, можно попробовать сбросить сессию пользователя через командную строку.

Это нужно сделать с каждым проблемным пользователем. Теперь можете попробовать залогиниться, проблема должна решиться. Если у вас есть возможность перезагрузить сервер, то лучше сделать это.

Проверьте, что у вас на RDSH хосте указан правильный сервер лицензирования и тип лицензии (CAL Per User/ CAL Per Device).

У меня ошибка “Не удается завершить требуемую операцию, поскольку службы удаленных рабочих столов сейчас заняты” один раз была, когда после установки роли RDSH я забыл указать адрес сервера с ролью Remote Desktop Licensing. В этом случае два пользователя подключались нормально, а третий получал ошибку.

Адрес сервера с лицензиями RDS можно указать:

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

С помошью gpresult нужно проверить, включена ли политика и какое в ней указано значение.

      1. Запустите командную строку с правами администратора и введите gpresult /H c:\gpresult.html
      2. Откройте файл gpresult.html, который лежит в корне диска C. Это обычный .html файл, рекомендуется открывать через internet explorer, так как в других браузерах он может отображаться некорректно;
      3. В разделе Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host\Connections найдите Limit number of connections, либо в поиске по странице наберите Limit number of connections.

      Если такой политики нет, значит она не применяется и ограничений по количеству одновременных подключений нет. Если политика есть и указано количество одновременных подключений, измените её значение на нужное вам число. Изменить групповую политику можно через оснастку gpedit.msc, если политика настроена через доменные GPO, отредактируйте соответствующую политику через gpmc.msc. После того как отредактируете политику, не забудьте набрать в командной строке gpupdate /force для немедленного применения политики.

      Если ресурсов у вас хватает, ошибок в журнале нет, перезагружаться нельзя, а сброс сессии по каким-то причинам не помог, то следует попробовать следующие варианты:

      date

      08.10.2019

      directory

      Windows Server 2012 R2, Windows Server 2016

      comments

      Один комментарий

      При установке любой роли или компонента в Windows Server 2016 появляется ошибка, что сервер требует перезагрузки: “ The operation cannot be completed, because the server that you specified requires a restart ” ( Сбой запроса на добавление или удаление компонентов на указанном сервере. Не удается завершить операцию, так как требуется перезагрузить указанный сервер ). Ок, перезагружаем сервер, пытаемся установить роль и опять появляется ошибка, что нужна перезагрузка сервера. Но ошибка повторяется, и так дальше по циклу.

      Windows Server 2016 Не удается завершить операцию, так как требуется перезагрузить указанный сервер

      В результате не получается установить/удалить ни одну из ролей/компонентов на сервере.

      В журнале событий сервера (Event Viewer -> Windows Logs -> System) при этом фиксируетсся ошибка EventID 7041 от источника Service Control Manager. В событии указано:

      Как же добавить в локальную политику сервисную учетную запись? Единственный вменяемый способ, который мне удалось найти, чтобы предоставить права “Log on as a service” для NT SERVICE\ALL SERVICES – воспользоваться утилитой ntrights.exe (из старого пакета Windows Server 2003 Resource Kit).

      Скачайте и установите Server 2003 Resource Kit (rktools.exe), затем предоставьте право SeServiceLogonRight командами:

      cd “C:\Program Files (x86)\Windows Resource Kits\Tools”
      ntrights.exe +r SeServiceLogonRight -u “NT SERVICE\ALL SERVICES”

      Проверяем, что NT SERVICE\ALL SERVICES появилось в разрешениях “Log on as a service” в консоли редактора политики.

      Log on as a service NT SERVICE\ALL SERVICES

      Перезагрузите свой Windows Server и попробуйте установить/удалить роль. Все должно пройти без ошибки.

      date

      12.06.2020

      directory

      Windows Server 2012 R2, Windows Server 2016, Windows Server 2019

      comments

      комментариев 5

      При настройке нового узла RDS фермы на Windows Server 2012 R2/2016/2019 вы можете столкнуться со следующим всплывающим предупреждением, которое появляется в трее:

      Licensing mode for the Remote Desktop Session Host is not configured.

      Remote Desktop Service will stop working in xxx days.

      Не задан режим лицензирования для сервера узла сеансов удаленных рабочих столов. Служба удаленных рабочих столов перестанет работать через xxx дней.

      Licensing mode for the Remote Desktop Session Host is not configured

      Судя по ошибке, служба RDS запущена в режиме льготного периода лицензирования (в течении пробного периода 120 дней вы можете использовать Remote Desktop Session Host без активации RDS лицензий). Когда grace период закончится, пользователи не смогут подключиться к RDSH, а в трее появится ошибка:

      Похожую проблему я уже описывал в статье про RDS ошибку “Удаленный сеанс отключен, поскольку отсутствуют доступные серверы лицензирования удаленных рабочих столов”, но тут оказалось немного другое. Не задан режим лицензирования для сервера узла сеансов удаленных рабочих столов

      В английской версии Windows Server ошибка выглядит так:

      Licenses are not available for the Remote Desktop Session Host server, and RD Licensing Diagnoser has identified licensing problem for the RD Session Host server.

      Licensing mode for the Remote Desktop Session Host is not configured.

      The Remote Desktop Session Host server is within its grace period, but the Session Host server has not been configured with any license server.

      Как вы видите, на самом деле доступных клиентам лицензий нет, т.к. режим лицензирования не задан.

      Не задан режим лицензирования для сервера узла сеансов удаленных рабочих столов

      Все это говорит о том, что администратор не задал для этого хоста сервер лицензирования RDS и/или режим лицензирования. Это несмотря на то, что при развертывании хоста RDS уже был указан тип лицензирования (Configure the deployment -> RD Licensing).

      rds deployment

      Отройте консоль PowerShell и проверьте, задан ли сервер лицензирования RDS с помощью следующих команд:

      $obj = gwmi -namespace "Root/CIMV2/TerminalServices" Win32_TerminalServiceSetting
      $obj.GetSpecifiedLicenseServerList()

      GetSpecifiedLicenseServerLis

      Примечание. Командлет Get-RDLicenseConfiguration при этом может выводить совершенно другие, ошибочные данные.

      Если сервер лицензирования не задан, его можно указать командой:
      $obj. SetSpecifiedLicenseServerList("rdslic1.winitpro.ru")

      Также вы можете принудительно задать параметры лицензирования RDS можно несколькими способами.

      Через реестр:

      В ветке HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\RCM\Licensing Core нужно изменить значение DWORD параметра с именем LicensingMode с 5 на:

      • 2 — если используется лицензирование на устройства (Per Device)
      • 4 — при использовании RDS лицензирования на пользователей (Per User)

      Вы можете изменить параметр реестра вручную через regedit.exe или следующими командами PowerShell из модуля управления реестром:

      тип лицензирования rds - LicensingMode

      После внесения изменений нужно перезагрузить RDS хост.

      Параметры сервера лицензирования RDS также можно задать через политики GPO (локальную или доменную политику).

      Если сервер RDS находится в рабочей группе (не добавлен в домен Active Directory), используйте локальный редактор политик gpedit.msc. Перейдите в раздел Конфигурация компьютера -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Лицензирование (Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Licensing).

      Нас интересуют две политики:

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

      Если в вашей сети настроен файервол, необходим открыть следующие порты с RDSH хоста до сервера RDS лицензирования: TCP/135, UDP/137, UDP/138, TCP/139, TCP/445, TCP/49152–65535 (RPC диапазон).

      Вы можете проверить доступность портов с помощью комнадлета Test-NetConnection. Если порты закрыты на локальном брандмауэре Windows Defender Firewall, вы можете открыть порты с помощью командлетов из модуля NetSecurity.

      rds сервер лицензирован, пользовательские лицензии доступны

      Также обратите внимание, что, если на сервере RD Licensing Server установлена, например, Windows Server 2012 R2 и CAL для RDS 2012 R2, вы не сможете установить RDS CAL лицензии для Windows Server 2016 или 2019. Ошибка “Remote Desktop Licensing mode is not configured” сохранится, даже если вы указали правильные тип лицензий и имя сервера лицензирования RDS. Старые версии Windows Server просто не поддерживают RDS CAL для более новых версий WS.

      При этом в окне RD License Diagnoser будет отображаться надпись:

      The Remote Desktop Session Host is in Per User licensing mode and no Redirector Mode, but license server does not have any installed license with the following attributes:

      Сначала Вам придется обновить версию Windows Server на сервере лицензирования (или развернуть новый RD License host). Более новая версия Windows Server (например, WS 2019 поддерживает RDS CAL для всех предыдущих версий Windows Server).

      Описание проблемы

      Есть RDS (Терминальная ферма), состоящая из двух посредников в режиме высокой доступности "High Availability" и 15 хостов подключения. Все, это добро работает на Windows Server 2012 R2. В один из прекрасных дней прилетела заявка, в которой пользователь не мог подключиться к терминальной ферме вот с такой формулировкой:

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

      Не удается завершить требуемую операцию

      Причины ошибки

      Данная проблема качует еще с Windows Server 2008 R2, а может быть и раньше. Ниже я попытаюсь рассказать, что может быть полезным. Когда я увидел данную ошибку подключения к терминальному серверу, то первым делом я полез в консоль управления RDS фермой. Если вы не помните, то делается это из оснастки "Диспетчер серверов".

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

      Зависшая сессия (4) на RDS

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

      Не удается завершить требуемую операцию-01

      Я попытался выкинуть пользователя, сделав ему (Выйти - Log Off). Это не дало эффекта, сессия все так же висела, сделать "Отключиться (Disconnect)" так же не привело ни к каким действиям. Так же вы можете использовать для принудительного разлогирования учетной записи (4) утилиты qwinsta, tasklist, reset session и Stop-TSSession.

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

      Не удается завершить требуемую операцию-02

      Зайдя на Session Host, я пользовательскую сессию просто не обнаружил в диспетчере задач Windows, значит в настройках коллекции есть, а тут нет, и выкинуть ее не получается. Перезапуск оснастки "Диспетчер серверов", так же не дал результата.

      Помня золотое правило Microsoft, семь бед, один ресет, я решил данный хост вечером перезагрузить, когда уже все закончат работу. Чтобы это правильно сделать, нужно закрыть новые подключения к нему, чтобы новые пользователи не могли к нему подключиться. Делается это из настроек коллекции RDS фермы. Выбираете в списке "Серверы узлов (Host Servers)", щелкните по нему правым кликом и выберите пункт "Не разрешать новые подключения (Do not allow new connections)". В итоге на против вашего узла сеансов удаленных рабочих столов, сменится статус с "Истина (True)" на "Ложь (False)". Что будет означать, невозможность новых подключений.

      Запрет новых подключений к RDS

      Сделал я это и забыл, стал ждать вечера, чтобы перезагрузить сервер. Проходит минут 10 и что я вижу, что пользователь пропал из активных подключений в оснастке управления коллекциями терминальных серверов. Я попросил его попробовать подключиться к терминалу, и все успешно было выполнено. Видимо какой-то был глюк в связке посредника подключений (connection broker) и узлом подключения, который не правильно отдавал информацию, о сессиях.

      Дополнительные варианты решения

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

      параметры клиента RDP

      Перейдите на вкладку "Взаимодействие" и снимите галку "Постоянное кэширование точечных рисунков"

      В большинстве случаев, это решает проблему. Если вам это не помогло, то советую:

      Причины ошибки с занятыми службами RDP

      The task you are trying to do can't be completed because Remote Desktop Services is currently busy. Please try again in a few minutes. Other users should still be able to log.

      Или русский вариант: Задача, которую вы пытаетесь выполнить, не может быть завершена, потому что в настоящее время заняты службы удаленного рабочего стола. Попробуйте повторить попытку, через несколько минут. Остальные пользователи, по прежнему смогут логиниться на сервер

      because Remote Desktop Services is currently busy

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

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

      Как видите пользователя отфутболивает и он не может попасть на сервер.

      Основные причины такого поведения

      • Первый вариант, это заглючила служба удаленных рабочих столов
      • Сильная загрузка сети на сервере с перемещаемыми профилями
      • Проблема с профилем пользователя. Эта проблема возникает из-за проблемы синхронизации в службе профиля пользователя (profsvc) между рабочим потоком и основной служебной программой. Когда служба профиля пользователя останавливается, служба может быть занята, пытаясь очистить профили.
      • Проблема с процессом csrss.exe. Эта проблема возникает из-за ситуации взаимоблокировки, которая возникает между процессом Csrss.exe и некоторыми приложениями (например, Microsoft Excel или Microsoft Visio).
      • Системе может не хватать ресурсов на подключение, их может выедать, все та же IIS, которую нужно ограничивать.
      • Проверьте наличие свободного места на диске C:\, видел и такое.

      rdp закончилось место

      Давайте разбираться, что нужно делать в такой ситуации.

      Методы решения ошибки входа по RDP

      И так, если вы все же словили ошибку "The task you are trying to do can't be completed because Remote Desktop Services is currently busy. Please try again in a few minutes. Other users should still be able to log", то не спешите расстраивается, она сто процентов решается, все только измеряется конечным результатом. В моем случае, виртуальная машина использовалась для разработки, поэтому ее использовали несколько человек.

      • Если у вас есть физический, консольный или удаленный доступ к серверу, то зайдите на него и попробуйте разлогинить, того пользователя, кто испытывает трудности при входе. Для этого вы заходите в диспетчер задач, переходите на вкладку пользователи, где находите нужного вам. Выбираете его, щелкаете правым кликом и делаете "Выход из системы (Log off)". В большинстве случаев, этого достаточно, но не в моем. В диспетчере задач, я обнаружил странного пользователя с именем (4) или (5). У данного пользователя с ником (4) или (5), было открыто 4 процесса:
      1. Client Server Runtime Process
      2. Desktop Windows Manager
      3. Windows Logon Application
      4. Windows Logon User Interface

      Мои попытки разлогинить его из диспетчера зада, оказались бесполезными. Я такое встречал уже, и видел когда было много таких пользователей (4), все решалось перезагрузкой сервера, лечилось на 100%, но в моем случае так как сервер использовался многими сотрудниками, то его трогать было нельзя, ищем другие варианты.

      Службы удаленного рабочего стола заняты в настоящее время-01

      Логин пользователя (5)

      • Если перезагрузить ваш сервер не представляется возможным, то попробуйте выполнить вот такие действия. Я буду показывать их на Windows Server 2016, но они применимы и для других версии ОС Windows. Откройте командную строку cmd от имени администратора. Введите вот такую команду:

      Она покажет всех залогиненных пользователей в терминальном сервере, обратите внимание, что тут так же есть пользователь (4), нас в данной выдаче интересует поле ID, это идентификатор пользователя. Он нам потребуется, чтобы грохнуть процесс csrss.exe, для конкретного пользователя. В моем случае ID 48.

      Службы удаленного рабочего стола заняты в настоящее время-02

      Далее в командной строке, выполните команду:

      у вас будут выведены, все процессы, которые запущены из под данного пользователя, нас будет интересовать csrss.exe и его PID.

      Службы удаленного рабочего стола заняты в настоящее время-03

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

      Службы удаленного рабочего стола заняты в настоящее время-04

      В появившейся колонке PID,найдите нужный нам, в моем случае, это PID 26980, он соответствует процессу csrss.exe, пробуем его отключить, в диспетчере задач. По идее, это должно помочь устранить ошибку подключения "Задача, которую вы пытаетесь выполнить, не может быть завершена, потому что в настоящее время заняты службы удаленного рабочего стола. Попробуйте повторить попытку, через несколько минут. Остальные пользователи, по прежнему смогут логиниться на сервер".

      Службы удаленного рабочего стола заняты в настоящее время-05

      • Если, этот метод вам не помог, то в некоторых случаях, с виртуальными машинами помогает вариант отключения и включения доступа по RDP

      включение и отключение RDP

      • Если, это не помогло и перезагрузка невозможна, попробуйте в случае с виртуальной машиной, произвести перезапуск службы удаленных рабочих столов. Надеюсь вам удалось решить проблему подключения "The task you are trying to do can't be completed because Remote Desktop Services is currently busy. Please try again in a few minutes. Other users should still be able to log" и вы продолжили работу.

      Проверка загрузки сети и процессора

      Так как при создании моей RDS HA фермы я применял концепцию перемещаемых профилей, не буду спорить, хорошо это или плохо, у каждого свое видение. Данная вариация хранит все пользовательские профили на выделенном сервере, в моем случае DFS HA сервера и при подключении пользователя к RDSH хосту идет загрузка этого профиля по сети. У меня это канал 10 ГБ и при нагрузке в 1100 человек я не испытываю проблем в час пик.

      Сильная загрузка сетевого интерфейса

      В Zabbix я отчетливо видел, что с 9 утра, когда пользователи ринулись на работу, сетевой интерфейс на сервере был забит на 100%

      График в Zabbix по высокой нагрузке сетевого интерфейса

      Так же привлекла высокая нагрузка на процессор (CPU), она была под 100%, что очень плохо.

      График высокой нагрузки CPU в Zabbix

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

      Читайте также: