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 [06.02.2020 06:23] – disupov | 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 ===== | ||
| - | {{: | ||
| - | |||
| - | В качестве альтернативы штатному механизму оповещения в простаивающей сессии можно использовать 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_array = $i -split " " | ? {$_} | ||
| - | $u_login = $u_array[0] | ||
| - | $u_session = $u_array[1] | ||
| - | $u_Idle_t = $u_array[$u_array.count-3] | ||
| - | |||
| - | # | ||
| - | 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.1580970233.txt.gz · Последнее изменение: — disupov