Назад | Перейти на главную страницу

Сценарий выхода из служб удаленных рабочих столов

У меня есть службы удаленного рабочего стола, работающие на Server 2012 R2. В моих настройках тайм-аута было установлено завершение сеанса через 60 минут после отключения. Это хорошо для всех пользователей, кроме одного: сеанс этого пользователя должен быть завершен, как только он отключится. Я не могу создать другую коллекцию, потому что у меня нет второго хоста сеанса.

Я решил создать супер простой командный файл, который заставит пользователя выйти из системы, например:

@ECHO off
logoff f

Это по какой-то причине требует прав администратора и вызывает запрос на повышение прав. Так что на данный момент это не вопрос.

Затем я создал сценарий PowerShell, например:

If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))

{   
$arguments = "& '" + $myinvocation.mycommand.definition + "'"
Start-Process powershell -Verb runAs -ArgumentList $arguments
Break
}
import-module RemoteDesktop
$name = [Environment]::Username
$session = get-rdusersession | Where-Object -Filter {$_.username -eq $name}
Invoke-RDUserLogoff -UnifiedSessionID $session.SessionID -HostServer $session.HostServer -Force

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

Кто-нибудь знает, как я могу это сделать?

Все оказалось намного проще, чем я думал. Простое использование и публикация "logoff.exe" под sys32 выполняет ту же работу без сложных разрешений.

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

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