Автоматически не разлогиниваются пользователи терминального сервера Server 2016

Конечно мы всегда выставляем несколько часов задержки, прежде чем отключенный сеанс будет завершен, но это работает не всегда. И часто пользователь просто закрывает окно подключения, а не нажимает — выйти из системы.

Тем не менее, есть небольшой скрипт PowerShell, который позволяет автоматически завершать отключенные сеансы. Отлично работает на Windows Server 2016 и проверен (и используется) лично мной:
PowerShell запускать от локального Администратора, независимо от того, под кем залогинены сейчас.

[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding(«cp866»)


# Сброс зависших сессий, добавьте в расписание на своем скрипт сервере
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 = "localhost"
RDP_Resetfailure($server)

Скрипт смотрит отключенные сессии, получает их ID и завершает их. Естественно, закрывая открытые приложения и файлы без сохранения.

Иногда это очень полезно, например, когда вы делаете резервное копирование файлов и баз данных, которые необходимо очистить от активных пользователей.

Добавить комментарий