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 05:53] – quser возвращает непредвиденные данные. 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.1580968418.txt.gz · Последнее изменение: — disupov