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** система выводит на экран предупреждение о истечении лимита. После чего у пользователя нет выбора, | ||
| - | |||
| - | В качестве альтернативы штатному механизму оповещения в простаивающей сессии можно использовать PowerShell-скрипт, | ||
| - | |||
| - | <file powershell Quietly-Disabling-Idle-RDS-sessions.ps1> | ||
| - | #Путь к списку серверов 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){ | ||
| - | $u_Idle_t = $u_Idle_t -replace " | ||
| - | if($u_Idle_t -like " | ||
| - | $u_Idle_t = [timespan]" | ||
| - | }elseif($u_Idle_t -eq " | ||
| - | $u_Idle_t = [timespan]" | ||
| - | }else{ | ||
| - | $u_Idle_t = [timespan]" | ||
| - | } | ||
| - | #Редко 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. | ||
| - | |||
| - | \\ | ||
| - | ---- | ||
| - | Проверено на следующих конфигурациях: | ||
| - | ^ Версия ОС ^ Версия служб RDS ^ Версия Powershell ^ | ||
| - | | Windows Server 2012 R2 Standard (6.3.9600) | ||
| - | |||
| - | ---- | ||
| - | {{: | ||
| - | |||
| - | {{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.1536133525.txt.gz · Последнее изменение: — Алексей Максимов