microsoft-windows:windows-server-2012-r2:remote-desktop-services:powershell-script-for-quietly-disabling-idle-rds-remote-desktop-sessions-in-windows-server-2012-r2
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
microsoft-windows:windows-server-2012-r2:remote-desktop-services:powershell-script-for-quietly-disabling-idle-rds-remote-desktop-sessions-in-windows-server-2012-r2 [05.09.2018 07:23] – ↷ Страница перемещена и переименована из draft:dmitriy-isupov:idle_drop_rds в microsoft-windows:windows-server-2012-r2:remote-desktop-services:powershell-script-for-quietly-disabling-idle-rds-remote-desktop-sessions-in-windows-server-2012-r2 Алексей Максимов | microsoft-windows:windows-server-2012-r2:remote-desktop-services:powershell-script-for-quietly-disabling-idle-rds-remote-desktop-sessions-in-windows-server-2012-r2 [12.08.2025 07:42] (текущий) – удалено Алексей Максимов | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ===== Тихое отключение бездействующих сессий RDS ===== | ||
- | Заметка о скрипте ограничивающий время бездействия пользователей в ударенной сессии. | ||
- | |||
- | \\ | ||
- | ==== Мотив ==== | ||
- | |||
- | После достижения лимита простоя, | ||
- | После чего у пользователя нет выбора, | ||
- | В результате чего сессия пользователя продолжает работать и занимать ресурсы ОС сервера RDS. | ||
- | |||
- | У RDS на Windows Server 2012 данное сообщение всплывает на весь горизонт экрана, | ||
- | |||
- | \\ | ||
- | ==== Решение ==== | ||
- | |||
- | Написать скрипт который будет заменять функцию __отключения простаивающих__ сессий RDS без предупреждения. | ||
- | |||
- | \\ | ||
- | ==== Реализация ==== | ||
- | |||
- | <code powershell> | ||
- | #Путь к списку серверов RDS в формате txt | ||
- | $path_list_srv = " | ||
- | |||
- | # | ||
- | $Idle_minutes = 30 | ||
- | |||
- | ######### | ||
- | # | ||
- | $Servers = $Null | ||
- | $Servers = Get-Content -Path $path_list_srv | ||
- | |||
- | #Если список серверов пуст то выход | ||
- | if ($Servers -eq $Null) {exit} | ||
- | |||
- | foreach($Srv in $Servers){ | ||
- | |||
- | # | ||
- | $List_i = $Null | ||
- | $List_i = quser / | ||
- | |||
- | # | ||
- | foreach ($i in $List_i){ | ||
- | Get-Variable -Name " | ||
- | |||
- | $u_login = ($i -split " " | ?{$_})[0] | ||
- | $u_session = ($i -split " " | ?{$_})[1] | ||
- | $u_Idle_t = ($i -split " " | ?{$_})[4] | ||
- | |||
- | # | ||
- | if ($u_Idle_t -ne $Null){ | ||
- | | ||
- | if($u_Idle_t -like " | ||
- | | ||
- | }elseif($u_Idle_t -eq " | ||
- | | ||
- | }else{ | ||
- | | ||
- | } | ||
- | |||
- | #Редко RDS выдает неверное idle time для активной сессии, | ||
- | if ( [int]$u_Idle_t.Days -gt 1000){$u_Idle_t = New-TimeSpan} | ||
- | |||
- | } | ||
- | |||
- | #Если idle time превышает заданный интервал то сессия отключается | ||
- | if ([int]$u_Idle_t.TotalMinutes -ge $Idle_minutes){ | ||
- | write-host -ForegroundColor yellow $Srv : $u_login / $u_Idle_t.TotalMinutes | ||
- | tsdiscon / | ||
- | }ELSE{write-host -ForegroundColor green $Srv : $u_login / $u_Idle_t.TotalMinutes} | ||
- | |||
- | } | ||
- | } | ||
- | </ | ||
- | |||
- | |||
- | |||
- | \\ | ||
- | ==== На последок ==== | ||
- | |||
- | Для работы скрипта необходимы права локального администратора на обрабатываемых серверах RDS. | ||
- | |||
- | |||
- | \\ | ||
- | ---- | ||
- | Проверено на следующих конфигурациях: | ||
- | ^ Версия ОС ^ Версия ПО ^ | ||
- | | Windwos server 2012R2 | ||
- | | | PowerShell v 4.0 | | ||
- | |||
- | ---- | ||
- | {{: | ||
- | |||
- | {{tag> | ||
- | |||
- | ~~DISCUSSION~~ |
microsoft-windows/windows-server-2012-r2/remote-desktop-services/powershell-script-for-quietly-disabling-idle-rds-remote-desktop-sessions-in-windows-server-2012-r2.1536132190.txt.gz · Последнее изменение: — Алексей Максимов