Если реализация предполагается только штатными средствами Windows Server, то это будет не тривиальная задача, хотя и вполне выполнимая.
Пункты 1 и 4 - можно получить из анализа лога "Microsoft-Windows-TerminalServices-LocalSessionManager/Operational", где фиксируются все пользовательские входы и отключения.
Пример скрипта можно посмотреть здесь: Connection Report for Remote Desktop
Пункты 2 и 3 это уже более сложная задача, так как нужно через какие-то промежутки времени где-то фиксировать состояние каждой сессии, полученное из п.2 и сохранять их для последующего анализа к пункту 3.
Примеры скриптов получения информации о сессиях можете искать там же: Script Center > Repository.
При этом следует обращать внимание на то, что командлет Get-RDUserSession имеет проблемы, которые приходится обходить.