Вики IT-KB

Пошаговые руководства, шпаргалки, полезные ссылки...

Инструменты пользователя

Инструменты сайта


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 ===== 
  
-Заметка о скрипте ограничивающий время бездействия пользователей в ударенной сессии. 
- 
-\\ 
-==== Мотив ==== 
- 
-После достижения лимита простоя, сессии пользователя MS RDS выводит на экран предупреждение о истечении лимита. 
-После чего у пользователя нет выбора, остается только нажать кнопку "ОК", что приводит к сбросу счетчика простоя.  
-В результате чего сессия пользователя продолжает работать и занимать ресурсы ОС сервера RDS. 
- 
-У RDS на Windows Server 2012 данное сообщение всплывает на весь горизонт экрана, что приводит к стрессовым ситуациям у неподготовленных пользователей. 
- 
-\\ 
-==== Решение ==== 
- 
-Написать скрипт который будет заменять функцию __отключения простаивающих__ сессий RDS без предупреждения. 
- 
-\\ 
-==== Реализация ==== 
- 
-<code powershell> 
-#Путь к списку серверов RDS в формате txt 
-$path_list_srv = "c:\mylistservers.txt" 
- 
-#Установка лимита простоя в минутах 
-$Idle_minutes = 30 
- 
-######### 
-#Загрузка списка серверов 
-$Servers = $Null 
-$Servers = Get-Content -Path $path_list_srv 
- 
-#Если список серверов пуст то выход 
-if ($Servers -eq $Null) {exit} 
- 
-            foreach($Srv in $Servers){ 
- 
-#Получаем данные с сервера RDS о сессиях  
-$List_i = $Null 
-$List_i =  quser /server:$Srv 
- 
-#Обработка данных сессий 
-      foreach ($i in $List_i){ 
-Get-Variable -Name "u_*" | Clear-Variable 
- 
-$u_login = ($i -split " " | ?{$_})[0] 
-$u_session = ($i -split " " | ?{$_})[1] 
-$u_Idle_t = ($i -split " " | ?{$_})[4] 
- 
-#Преобразование idle time в временной формат 
-if ($u_Idle_t -ne $Null){ 
- $u_Idle_t = $u_Idle_t -replace "\+",":" -replace "\.","0:0" -replace "Disc","0:0" 
-  if($u_Idle_t -like "*:*"){ 
-   $u_Idle_t = [timespan]"$($u_Idle_t)" 
-  }elseif($u_Idle_t -eq "." -or $u_Idle_t -eq "none"){ 
-   $u_Idle_t = [timespan]"0:0" 
-  }else{ 
-   $u_Idle_t = [timespan]"0:$($u_Idle_t)" 
-} 
- 
-#Редко RDS выдает неверное idle time для активной сессии, оно превышает 1000 минут 
-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 /SERVER:$Srv $u_session 
-  }ELSE{write-host -ForegroundColor green $Srv : $u_login / $u_Idle_t.TotalMinutes} 
- 
-      } 
-            } 
-</code> 
- 
- 
- 
-\\ 
-==== На последок ==== 
- 
-Для работы скрипта необходимы права локального администратора на обрабатываемых серверах RDS. 
- 
- 
-\\ 
----- 
-Проверено на следующих конфигурациях: 
-^ Версия ОС              ^ Версия ПО         ^ 
-| Windwos server 2012R2  | RDS 5.1           | 
-|                        | PowerShell v 4.0  | 
- 
----- 
-{{:user:disupov.png?50&nolink |}} Автор первичной редакции:\\ [[user:disupov|Дмитрий Исупов]] \\ Время публикации: 28.05.2018 18:44 
- 
-{{tag>PowerShell "Windows Server 2012 R2" Script  "RDS" "Remote Desktop"  }} 
- 
-~~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 · Последнее изменение: Алексей Максимов

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki