Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В некоторых условиях администратор может потребовать принудительного выхода всех пользователей, вошедшего в систему на сервер удаленного рабочего стола. Это можно сделать с помощью пакетного файла или скрипта PowerShell.
Предупреждение
При выполнении следующей процедуры все пользователи вошли на сервер удаленного рабочего стола. Это может привести к потере несохраненных данных. Из-за этого рекомендуется крайнее осторожность.
Исходный номер базы знаний: 259436
Использование PowerShell
Чтобы выйти из всех сеансов пользователей, выполните следующие командлеты PowerShell в брокере подключений:
$sessions = Get-RDUserSession
foreach($session in $sessions)
{
Invoke-RDUserLogoff -HostServer $session.HostServer -UnifiedSessionID $session.UnifiedSessionId -Force
}
Чтобы выключить только отключенные сеансы пользователей, выполните следующие командлеты PowerShell в брокере подключений:
$sessions = Get-RDUserSession | ? {$_.SessionState -eq "STATE_DISCONNECTED"}
foreach($session in $sessions)
{
Invoke-RDUserLogoff -HostServer $session.HostServer -UnifiedSessionID $session.UnifiedSessionId -Force
}
Использование пакетного файла
Поместите следующие сведения в пакетный файл (.bat):
query session >session.txt
for /f "skip=1 tokens=3," %%i in (session.txt) DO logoff %%i
del session.txt
Этот пакетный файл может выполняться в любое время, когда администратор хочет принудительно выполнить выход всех пользователей, которые не вошли в консоль сервера удаленных рабочих столов.
Запрос — это команда с несколькими целями, найденная в среде сервера удаленных рабочих столов. В этом случае сеанс запроса создает список всех сеансов, выполняемых на сервере удаленного рабочего стола, а также номера идентификатора сеанса. В пакетном файле выходные данные перенаправляются в текстовый файл. Затем инструкция FOR анализирует каждую строку текстового файла, пропускает первую строку и ищет номер идентификатора сеанса, найденный в третьем столбце. Затем эта переменная помещается в logoff, что приводит к отключению сеанса.
При запуске этого пакетного файла не редко возникает сообщение об ошибке. Если пользователь вошел в консоль сервера удаленных рабочих столов, создается следующее сообщение об ошибке:
Could not logoff session ID 0 from session Console, Error code 5
Error [5]: Access is denied.
Это связано с ограничением Logoff
команды. Не удается принудительно выполнить выход сеанса консоли. Решение этой проблемы заключается в том, чтобы изменить пакетный файл для чтения:
query session >session.txt
for /f "skip=2 tokens=3," %%i in (session.txt) DO logoff %%i
del session.txt
Это приводит к пропуску первых двух строк файла Session.txt, избегая ошибки.