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 · Последнее изменение: — Алексей Максимов