Как подключиться к терминальной сессии пользователя

Команды cmd:Query Session – список сессийMstsc.exe /shadow:sessionID /control /noConsentPrompt

Спешим поделиться хорошей новостью: Microsoft вернула функционал Remote Desktop Shadowing в Windows Server 2012 R2 и Windows 8.1! Напомним, что режим Shadow (теневой сеанс) – может использовать администратором для просмотра и управления активной терминальной сессией любого пользователя. Этот режим работы поддерживается практически с первых версий терминального сервера Microsoft и неожиданно был убран в релизе Windows Server 2012 (связано с переносом стека rdp из режима ядра в пользовательский режим).

Кроме того, у режима RD Shadow и rdp клиента появился ряд новых интересных возможностей. Полный список опций rdp клиента mstsc.exe, определяющих возможность удаленного подключения к сессии конечного пользователя:

/shadow:ID – подключится к терминальной сессии с указанным ID

/v:servername – имя терминального сервера (если не задано, используется текущий)

/control – возможность взаимодействия с сеансом пользователя (если не указано, используется режим просмотра сессии пользователя).

/noConsentPrompt – не запрашивать у пользователя подтверждение на подключение к сессии

Ограничения теневых сеансов RDS в Windows 2012 R2

Remote Desktop Shadow – работа в GUI

Подключиться к сессии пользователя можно с помощью утилиты mstsc.exe или непосредственно из консоли Server Manager. Для этого в консоли Server Manager откройте коллекцию QuickSessionCollection.

Щелкнув по сессии интересующего пользователя, выберите  в контекстном меню Shadow.

Если выбрана опция «Запросить подтверждение», в сессии у пользователя появится запрос:

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

Совет. Для отключения от сессии пользователя и выхода из shadow-режима нужно нажать ALT+* на рабочей станции или Ctrl+* на терминальном сервере (если не заданы альтернативные комбинации).

Если же пользователь отклонит подключение, появится окно:

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

Этой политикой можно настроить следующие варианты подключения по RD Shadow:


Как подключиться к терминальной сессии пользователя

RDS Shadow из Powershell

Воспользоваться функционалом Remote Desktop Services Shadow можно и из Powershell.

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


Как подключиться к терминальной сессии пользователя

На данном сервере мы обнаружили три активных терминальных сессии. Подключимся к сессии пользователя с ID сессии 3:

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

/shadow:ID – подключится к RDP сессии с указанным ID.

/v:servername – имяRDP/RDS терминального сервера (если не задано, используется текущий).

/noConsentPrompt – не запрашивать у пользователя подтверждение на подключение к сессии.

/prompt –используется для подключения под другими учетными данными. Запрашивается имя и пароль пользователя для подключения к удаленному компьютеру.

Использование Remote Desktop Shadow из графического GUI

выберите в контекстном меню Shadow (Теневая копия)

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

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

Этой политикой можно настроить следующие варианты теневого подключения через теневое подключение RD Shadow::

Теневое подключение RDS Shadow из PowerShell

Воспользоваться функционалом теневого подключения к сессии пользователя через теневое подключение Remote Desktop Services можно и из Powershell.

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

На данном сервере мы обнаружили три активных терминальных сессии. Подключимся к сессии пользователя с ID сессии 3:
Mstsc /shadow:3 /control

Также для получения списка всех сессии на сервере можно выполнить команду

На экране отобразится список RDP сессий, их ID и статус: активная сесиия (Active) или отключенная (Disconnected).

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

query session /server:servername

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

Можно поместить данный файл в каталог %Windir%System32, в результате для теневого подключения достаточно выполнить команду shadow.

Для подключения к консольной сессии можно использовать такой скрипт:

Как разрешить обычном пользователям использовать теневое подключение

В рассмотренных выше примерах для использования теневого подключения к терминальным сессиям необходимы права локального администратора на RDS сервере. Однако можно разрешить использовать теневое (shadow) подключение для подключения к сессиям пользователей и простым пользователям (не давая им прав локального администратора на сервере).

:/>  Как установить Windows 7 после Windows 8 на ноутбуке и Как установить Windows 7 как вторую систему к Windows 10(8) на ноутбуке

К примеру, вы хотите разрешить членам группы AllowRDSShadow использовать теневое подключение к сессиям пользователей, выполните команду:

wmic
/namespace:\rootCIMV2TerminalServices PATH
Win32_TSPermissionsSetting WHERE (TerminalName=”RDP-Tcp”) CALL
AddAccount “corpAllowRDSShadow”,2

В январе 2018 года после установки обновления KB4056898 (патч Windows против Meltdown и Spectre) пользователи столкнулись, что в Windows Server 2012 R2 перестал работать теневой доступ. При попытке выполнить теневое подключение к чужой сессии появляется сообщение «Неопознанная ошибка» (в логах присутствует ошибка STATUS_BAD_IMPERSONATION_LEVEL). Аналогичная проблема возникала и на RDS ферме на базе Windows Server 2016.

Для решения проблемы нужно установить отдельные обновления:

Теневое подключение к сеансам RDP / RDS позволяет администраторам подключаться к любому сеансу пользователя для просмотра рабочего стола пользователя и взаимодействия с ним. Режим теневого копирования удаленного рабочего стола работает во всех современных версиях Windows, начиная с Windows 2012 R2 и Windows 8.1 (за исключением Windows Server 2012, в которой стек rdp переместился из режима ядра в режим пользователя). В этой статье мы рассмотрим, как настроить и использовать RDS Shadowing для подключения к пользовательским сеансам RDP в Windows Server 2016 и Windows 10

В Windows Server 2016 / Windows 10 в стандартном клиенте RDP (mstsc.exe) есть несколько специальных параметров, которые можно использовать для удаленного теневого подключения (RDS Shadow) к сеансу RDP любого пользователя:


Как подключиться к терминальной сессии пользователя

Теневые сеансы можно использовать для подключения к пользовательским сеансам на компьютерах и серверах как в домене Active Directory, так и в рабочей группе. Кроме того, необязательно иметь права администратора на хосте RDS, на котором работает пользователь. Администраторы могут делегировать полномочия теневого копирования RDS кому угодно, даже не административным учетным записям (подробнее см. Ниже).


Как подключиться к терминальной сессии пользователя

Список справа будет содержать список пользователей, у которых есть сеансы на этом сервере RDS. Щелкните правой кнопкой мыши сеанс, который нужен пользователю, выберите «Тень» в контекстном меню).

Вы можете подключиться только к активному пользовательскому сеансу. Если сеанс находится в отключенном состоянии (отключен из-за тайм-аута), вы не можете подключиться к этому сеансу:

Ошибка тени – указанный сеанс не подключен.

Появится окно с параметрами теневого подключения. Вы можете просматривать (Просмотр) и управлять (Управлять) сеансом. В качестве альтернативы вы можете включить опцию Требовать согласия пользователя).

Если выбрана опция «Запросить согласие пользователя», пользователю будет предложено в сеансе:

Запрос удаленного мониторинга Winitpro администратор запрашивает удаленный мониторинг вашей сессии. Вы принимаете этот запрос?

Winitpro администратор требует удаленного просмотра сеанса. Вы принимаете запрос?


Как подключиться к терминальной сессии пользователя

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


Как подключиться к терминальной сессии пользователя

Совет. Чтобы выйти из сеанса пользователя и выйти из теневого режима, необходимо нажать ALT + * на рабочей станции или Ctrl + * на сервере RDS (если не указаны альтернативные комбинации).

Если пользователь отказался от административного подключения Shadow RDS, появится окно:

Теневая ошибка: оператор или администратор отклонил запрос.

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

Теневая ошибка: параметр групповой политики настроен на требование согласия пользователя. Проверьте конфигурацию параметров политики.


Как подключиться к терминальной сессии пользователя

Если вам нужно проверить подключения пользователей RDS Shadow, используйте следующие события из журнала Microsoft-Windows-TerminalServices-RemoteConnectionManager / Operational в качестве фильтра:


Как подключиться к терминальной сессии пользователя

С помощью этой политики вы можете настроить следующие параметры подключения к теневому удаленному рабочему столу:


Как подключиться к терминальной сессии пользователя

После изменения настроек не забудьте обновить настройки групповой политики на хосте RDP / RDS.

вы можете настроить правила для удаленного подключения в домене из консоли

, используя рассматриваемый параметр политики, или групповую политику, которая вносит изменения непосредственно в реестр (последний вариант позволяет более точно настроить таргетинг политики на компьютеры с помощью Group Таргетинг на уровень элемента политики).

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

Прежде всего, вам необходимо получить список пользовательских сессий на RDS-сервере терминала (пользовательские сессии будут сгруппированы по их статусу):


Как подключиться к терминальной сессии пользователя

На этом сервере мы обнаружили три активных пользовательских сеанса RDP. Чтобы подключиться к пользовательскому сеансу с идентификатором сеанса 3, выполните команду:

Mstsc /shadow:3 /control /noConsentPrompt

Кроме того, чтобы получить список всех сеансов RDP на сервере (или в настольной версии Windows 10, в которой разрешено несколько подключений RDP), вы можете использовать команду:

На экране отобразится список сеансов RDP, их идентификаторы и статус: сеанс активен (Активен) или отключен (Отключен).

:/>  Автоматизация создания учетных записей пользователей с заданным паролем


Как подключиться к терминальной сессии пользователя

Чтобы получить список сессий на удаленном сервере, выполните команду:

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

Mstsc /v:rdsh2:3389 /shadow:3 /control

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

Вы можете поместить этот файл в каталог% Windir% System32. Поэтому для теневого подключения к пользователю достаточно запустить теневую команду.

Для подключения к сеансу консоли вы можете использовать следующий скрипт:

Вы также можете использовать следующий сценарий PowerShell с простым графическим интерфейсом (rdp_shadow_connection.ps1) для теневого подключения):

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

Чтобы запускать сценарии PowerShell (Ps1) на вашем компьютере, вам необходимо настроить политику выполнения PowerShell.

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

Как разрешить обычном пользователям использовать теневое подключение?

В предыдущих примерах для использования теневого подключения к пользовательским сеансам RDP требуются права локального администратора на сервере RDS. Однако вы также можете включить теневые подключения для непривилегированных пользователей (без предоставления им прав локального администратора на компьютере / сервере).

Например, вы хотите разрешить членам группы домена AllowRDSShadow использовать теневое подключение к сеансам RDP. Выполните команду в cmd.exe с правами администратора:

В январе 2018 года после установки обновления KB4056898 (патч Windows против Meltdown и Spectre) пользователи обнаружили, что теневой доступ перестал работать в Windows Server 2012 R2. При попытке установить теневое соединение с другим сеансом отображается сообщение «Неопознанная ошибка» (в журналах есть ошибка

). Аналогичная проблема возникла в ферме RDS на базе Windows Server 2016.

Чтобы это исправить, вам необходимо установить отдельные обновления:

Источник изображения: winitpro.ru

Для завершения сессии пользователя на терминальном сервере можно использовать следующие методы:

Обратите внимание, что для завершения сессии пользователя на терминальном сервере вам может потребоваться права администратора.

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

В Windows Server 2012 R2 существует ферма RDS из 15 узлов подключения. Для этого нужны серверы и серверы, которые работают постоянно. Если в вашей ферме не настроены тайм-ауты времени безотказной работы, пользователи могут зависать на авторизованных соединениях на недели или месяцы. Логично предположить, что это не очень хорошо и приводит к различным последствиям, одним из которых является полная блокировка сеанса, когда человек не может подключиться к терминальному серверу и видит сообщение «Служба профилей пользователей запущена» или другое «Может не завершить запрошенную операцию », я не говорю о повреждении профиля пользователя. В результате того, что брокеры RDS видят, что пользователь уже вошел в систему, они не позволяют ему повторно подключаться к другому серверу узла сеанса, даже если вы закрываете новые подключения на текущем. Пока вы не выйдете из системы для этого сеанса, он все равно будет мешать. Давайте узнаем, как это сделать.

Методы завершения сессии пользователя не терминале

Есть несколько способов удалить пользователя с сервера.

Как выкинуть пользователя из оснастки управления RDS


Как подключиться к терминальной сессии пользователя

Щелкните по нему правой кнопкой мыши. В контекстном меню появится пункт «Выйти», что соответствует окончанию сеанса (Выход). Также есть пункт «Отключить», если вы его выберете, пользователь будет выгнан с терминального сервера, но его сессия останется на нем, эта операция эквивалентна тому, если пользователь только что нажал на крестик в окне с именем терминального сервера.


Как подключиться к терминальной сессии пользователя

После выбора пункта «Отключить» сеанс пользователя в ферме RDS отключится нормально. Пользователь сам увидит сообщение «Служба профилей пользователей запущена» и окно закроется без ошибок.

Второй метод разлогинить пользователя на терминальном сервере


Как подключиться к терминальной сессии пользователя

Находим нужного нам пользователя и кликаем по нему правой кнопкой, в интересующем нас контекстном меню пункт «Выход». Выбираем его и завершаем сеанс пользователя.


Как подключиться к терминальной сессии пользователя

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

Использование утилиты RWINSTA

Если вы окажетесь в ситуации, когда графические методы не позволяют вывести пользователя из системы, а это необходимо, утилиты командной строки придут вам на помощь. R WINSTA – это встроенная утилита Windows, которая позволяет восстанавливать сеансы на основе идентификатора сеанса и имени сеанса. Прежде всего, вам нужно вычислить либо идентификатор сеанса, либо его имя, как я вам сказал, обо всех известных мне методах, с которыми вы можете ознакомиться. Выберу утилиту qwinsta. Пишем команду:

:/>  Как сбросить windows 7 до заводских настроек на ноутбуке и переустановить windows это прошлый век. Как восстановить заводские настройки компьютера

В моем примере имя сеанса – rdp-tcp # 172, а его идентификатор – 515. Мы пишем команду:

rwinsta rdp-tcp # 172 / сервер: localhost или rwinsta 515 / сервер: localhost


Как подключиться к терминальной сессии пользователя

И в первом, и во втором случае пользователь будет отключен от этого сервера. Эту команду можно запускать удаленно с вашего рабочего места, если у вас есть право выйти из системы. Этот метод мне не раз помогал в моей практике, например, случай с заблокированным сеансом на Windows Server 2016, где вместо имени пользователя было имя

.

Как отключить пользователя через reset session

вы также можете завершить сеанс пользователя с помощью утилиты командной строки Reset Session. В текущем примере у моего Геннадия Викторовича Барбоскина имя сеанса rdp-tcp # 16 с его ID 11. Эту утилиту можно использовать как локально на самом терминальном сервере, так и на вашей рабочей станции, также есть ключ / сервер.

восстановить сеанс rdp-tcp # 16 или восстановить сеанс 11


Как подключиться к терминальной сессии пользователя

Как отключить пользователя через logoff

Вы также можете выйти из учетной записи пользователя или даже из заблокированной с помощью утилиты командной строки «LogOff». В этом примере Геннадий Барбоскин имеет имя сеанса rdp-tcp # 43. В командной строке от имени администратора введите:

logoff rdp-tcp # 43 / server: localhost (имя сервера можно изменить) или logoff 54 / server: localhost


Как подключиться к терминальной сессии пользователя

Выход пользователя через командлет Stop-TSSession

Есть замечательный командлет Stop-TSSession. Давайте посмотрим на идентификатор сервера и имя сеанса, для этого в открытом PowerShell введите:

В результате я вижу, что пользователь barboskin.g имеет SessionID 3. Итак, введите

Принудительный стоп-TSSession 3 или Stop-TSSession 3-Force


Как подключиться к терминальной сессии пользователя

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

Выход пользователя через командлет Stop-TerminalSession

Этот командлет устанавливается отдельно с пакетом Pscx. Прежде всего, мы видим локально или удаленно идентификаторы сеанса пользователя, для которого мы хотим выйти. Выполняем команду:

Get-TerminalSession – имя сервера ComputerName


Как подключиться к терминальной сессии пользователя

Мне нужен идентификатор сеанса 427. Затем мы воспользуемся командлетом Stop-TerminalSession, чтобы выгнать пользователя и завершить его сеанс.

Stop-TerminalSession -ComputerName имя сервера -Id 427 -Force


Как подключиться к терминальной сессии пользователя

Как видите, сеанс 427 больше не существует, и мы смогли исключить пользователя из сеанса RDS с помощью командлета Stop-TerminalSession.

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


Как подключиться к терминальной сессии пользователя

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

Изменение параметров удаленного управления

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

(Установить правила удаленного управления для пользовательских сеансов служб удаленных рабочих столов).

Найти его можно здесь:

Данной политике соответствует DWORD параметр реестра Shadow в ветке HKLMSOFTWAREPoliciesMicrosoftWindows NTTerminal Services (значения этого параметра, соответствующие параметрам политики указаны в скобках).

Этой политикой можно настроить следующие варианты теневого подключения RD Shadow:


Как подключиться к терминальной сессии пользователя

Выдача прав на подключение обычным пользователям

На каждом сервере, где необходимо осуществлять подключения, необходимо выполнить следующую команду (запустить cmd или powershell от имени администратора):

wmic /namespace:\rootCIMV2TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName=’RDP-Tcp’) CALL AddAccount ‘DomainGroup_Name’,2

Domain — имя вашего домена

Group_Name — имя группы, в которой состоят пользователи, которым необходимо дать доступ