Сценарий выхода из системы служб удаленного рабочего стола
У меня есть службы удаленного рабочего стола, работающие на 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
Опять же, это требует прав администратора и не будет работать тоже. Это работает для администраторов, но ни для обычных пользователей.
У кого-нибудь есть идеи, как мне это сделать?
2 ответа
Это оказалось намного проще, чем я думал. Простое использование и публикация "logoff.exe" под sys32 делает ту же самую работу без сложности разрешений.
Не могли бы вы добавить это в планировщик задач с повышенными привилегиями и затем выполнить при необходимости? Используйте идентификатор события, который запускается, когда пользователь отключается от служб Term для запуска вашего сценария. Это должно выполняться после того, как они отключатся, и поскольку вы можете предоставить учетные данные администратора для задачи, она должна выполняться без запуска запроса UAC.
Не уверен, что это за идентификатор события, но я уверен, что в журналах есть что-то, что записывает это, но вам, возможно, придется включить ведение журнала.