Автоотключение оффлайн пользователей RDP
Есть скрипт, который отключает пользователей по времени простоя, мне нужно чтобы он отключал пользователей только, которые отключились, а не бездействуют
#Путь к списку серверов RDS в формате txt
$path_list_srv = "c:\server.txt"
#Время позволенное на АФК ( МИНУТЫ )
$Idle_minutes = 15
# VIP
[array]$excep_login_list
$excep_login_list = Get-Content -Path "c:\vip.txt"
#Загрузка списка серверов
$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_array = $i -split " " | ? {$_}
$u_login = $u_array[0]
$u_session = $u_array[1]
$u_Idle_t = $u_array[$u_array.count-3]
#Преобразование 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)"
}
#FIX БАГА
if ( [int]$u_Idle_t.Days -gt 1000){$u_Idle_t = New-TimeSpan}
}
#Если ВИП
if ( ($excep_login_list | Where-Object {$_ -eq $u_login}) -ne $NUll){$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
logoff /SERVER:$Srv $u_session
}ELSE{write-host -ForegroundColor green $Srv : $u_login / $u_Idle_t.TotalMinutes}
}
}