Ограничение доступа к серверу терминалов в определенные часы или Время входа или же Logon hours.
В домене Active Directory это сделать легко, см. картинку.
На отдельно стоящем сервере терминалов такой возможности «из коробки» нет. На одном англоязычном форуме я натолкнулся на такое решение: с помощью планировщика задач и команды net localgroup удалять и добавлять пользователя или группу в группу «Пользователи удаленного рабочего стола» (Remote desktop users).
Удаление пользователя из группы «Remote desktop users» не отключит сеанс пользователя, и если пользователь в это время в залогинен системе, то он так продолжит работать. Необходимо его принудительно отключать. Один из способов — в свойствах пользователя указать лимит активной или простаивающей сессии.
Другой — использовать встроенную утилиту Windows — logoff.exe, но дело том, что команде logoff в качестве параметров надо передавать ID или имя сессии, которые каждый раз разные. Их можно получить с помощью команды query. Возможно перенаправить вывод одной команды на вход другой, но у меня это не получилось сделать наскоком, а надо было поскорей. Буду благодарен за подсказку в комментариях.
Я нашел утилиту сторонних разработчиков, компании Ctrl-Alt-Del TSLogoff.exe, которая может использовать имя пользователя (логин) в качестве входного параметра.
Итак я создал два cmd файла следующего содержания:
C:scriptsTSLogoff.exe vasia net localgroup "remote desktop users" /delete server_namevasia
и
net localgroup "remote desktop users" /add server_namevasia
и поставил их запуск в «Планировщике Заданий» (Task Scheduler) на отключение и включение пользователя соответственно.
Скачать TSLogoff.exe и описание параметров можно тут: http://www.ctrl-alt-del.com.au/CAD_TSUtils.htm