Всем у кого в хозяйстве есть терминальные сервера на Windows приходится сталкиваться с зависшими сессиями.
Сессии частенько зависают, если пользователь просто закрыл окно терминала.
Естественно, все мы настраиваем параметры сброса сессий по времени и отключению пользователя, но бывает что сессии все равно не завершаются и тогда мы используем команды: qwinsta — просмотр сессий и rwinsta — сброс сессий
Абсолютно уверен, что скриптик который сам отслеживает зависшие сессии и сбрасывет их написали многие, но не выложили в сеть потому что это просто, но я выложу для тех кто ищет и кому это нужно прямо сейчас:
Скрипт получает список сессий qwinsta, выбирает сессии со статусом Диск ("*ЁбЄ*" — это тоже «Диск», просто в кривой кодировке, добавлено на всякий случай) и rwinsta сбрасывает сесии.
В скриптике rwinsta — закомментирована, чтоб сессии сбрасывались раскомментируйте.
В текущем виде скрипт просто покажет вам зависшие сессии.
# Сброс зависших сессий, добавьте в расписание на своем скрипт сервере Function RDP_Resetfailure($server){ $ts = qwinsta /server:$server $td = ($ts | where { ($_ -like "*Disc*" -or $_ -like "*Диск*" -or $_ -like "*ЁбЄ*" ) -and $_ -notlike "*services*"}) $tdselect = $td # Для отладки или внесения в лог: Login Id State $td = $td -ireplace ("[^0-9]","") # оставляем только id сессий for($i=0; $i -lt $td.Count; $i++){ Write-Host Reset RDP Failture session ID: $td[$i] $tdselect[$i] #отладка просмотр id сессий #rwinsta $td[$i] /server:$server # сброс зависших сессий, раскомментируйте эту строку } } $server = "MyRDPServer" RDP_Resetfailure($server)
ссылка на оригинал статьи https://habrahabr.ru/post/276935/
Добавить комментарий