Вики 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:45] Алексей Максимов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 ===== 
  
-После достижения лимита простоя сессии пользователя Служб удалённых рабочих столов **Remote Desktop Services** (**RDS**) в **Windows Server** система выводит на экран предупреждение о истечении лимита. После чего у пользователя нет выбора, остается только нажать кнопку "ОК", что приводит к сбросу счетчика простоя. В результате сессия пользователя продолжает работать и занимать ресурсы сервера RDS. В RDS на **Windows Server 2012 R2** данное сообщение всплывает на весь горизонт экрана, что приводит к стрессовым ситуациям у неподготовленных пользователей. 
- 
-В качестве альтернативы штатному механизму оповещения в простаивающей сессии можно использовать PowerShell-скрипт, который будет выполнять __отключение__ простаивающих сессий __без вывода всплывающего предупреждения__. 
- 
-<file powershell Quietly-Disabling-Idle-RDS-sessions.ps1> 
-#Путь к списку серверов 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} 
- 
-    } 
-} 
-</file> 
- 
-Для работы скрипта необходимы права локального администратора на обрабатываемых серверах RDS. 
- 
-\\ 
----- 
-Проверено на следующих конфигурациях: 
-^ Версия ОС              ^ Версия служб RDS ^ Версия Powershell ^ 
-| Windows Server 2012 R2 Standard (6.3.9600)  |  RDS 5.1  |  PowerShell 4.0  | 
- 
----- 
-{{:user:disupov.png?50&nolink |}} Автор первичной редакции:\\ [[user:disupov|Дмитрий Исупов]] \\ Время публикации: 28.05.2018 18:44 
- 
-{{tag>PowerShell Script "Windows Server" "Windows Server 2012 R2" RDS "Remote Desktop Services"}} 
- 
-~~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.1536133525.txt.gz · Последнее изменение: Алексей Максимов

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki