dimnissv

Logoff-Sessions.ps1

Aug 21st, 2025 (edited)
513
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $ignoredProcesses = @("1cv8.exe")
  2.  
  3. # Получаем все отключенные сеансы
  4. $sessions = Get-RDUserSession -ConnectionBroker $env:COMPUTERNAME | Where-Object { $_.SessionState -eq "Disconnected" }
  5.  
  6. foreach ($session in $sessions) {
  7.     # Получаем все процессы и фильтруем их по ID сессии
  8.     $processes = Get-Process | Where-Object { $_.SessionId -eq $session.SessionId }
  9.  
  10.     $hasImportantProcess = $false
  11.     if ($processes) {
  12.         foreach ($process in $processes) {
  13.             if ($ignoredProcesses -contains $process.ProcessName) {
  14.                 $hasImportantProcess = $true
  15.                 break
  16.             }
  17.         }
  18.     }
  19.  
  20.     if (-not $hasImportantProcess) {
  21.         # Завершаем сеанс, если нет важных процессов
  22.         Invoke-RDUserLogoff -HostServer $session.HostServer -UnifiedSessionId $session.UnifiedSessionId -Force
  23.         Write-Host "Сеанс $($session.UserName) с ID $($session.SessionId) был завершен."
  24.     }
  25. }
Advertisement
Add Comment
Please, Sign In to add comment