Главная > Windows > Автоматизированный Logoff всех пользователей с терминального сервера

Автоматизированный Logoff всех пользователей с терминального сервера

Как сделать logoff забывчивых пользователей с терминального сервера в нужное время?

Долго думал каким таким простым образом можно сделать массовый logoff пользователей с терминального сервера после рабочего времени, при этом некоторых пользователей (к примеру себя) с терминала не выгонять?! Первое, что взбрело в голову, сделать групповую политику которая все за тебя сделает, покапался в настройках - такая штуковина существует, но она умеет выгонять только по таймеру, т.е. через промежуток времени (1,2 и т.д. часа), а не в указанное время. Это не всегда подходит т.к. персонал начинает работать не всегда в одно и тоже время, да и может кто то работать больше чем 8-9 часов в день. Долго бился с этой задачей, пока снова не спасла (всесильная) командная строка и несколько строк кода скрипта. Скрипт 100% работает на Windows Server 2008 R2 x64 (устанавливать дополнительно ничего не надо, все работает через штатные средства). Вот такую коду набросал: в USER_NAME записываем к примеру свой логин "admin" (он не будет выгоняться). обратите внимание, что не корректно отображается ">" в коде, там она обозначается значком "& gt;" После этого, добавляем скрипт в менеджер задач на нужное время и вуаля, всех кто забыл закрыть терминальные сессии - выгоняем. Обращайтесь, пишите свои замечания и статьи, вместе мы сделаем мир круче 🙂
1 звезда2 звезды3 звезды4 звезды5 звезд (Рейтинг отсутствует)

Загрузка...
  1. 1
    14 марта 2013 в 05:32 | #1

    Молодца!

  2. Andrew
    5 декабря 2013 в 06:06 | #2

    Это скрипт или можно просто в батник запихнуть и на планировщик поставить?

    • chum
      5 декабря 2013 в 06:23 | #3

      да. пихаем в батник и запихиваем в планировщик.

  3. Andrew
    5 декабря 2013 в 06:26 | #4

    спасибо попробуем =) а то и правда некоторые забывчивые не выходят правильно и обновления корректно не сделать! еще раз спасибо!

  4. 21 января 2014 в 15:44 | #5

    Привет, а как 2 юзаков не выгонять, есть к примеру админ и админ2, как это будет выглядеть?

    • chum
      21 января 2014 в 19:31 | #6

      Приветствую, можно попробовать на файл sessionTMP.txt еще раз накинуть эту строчку
      findstr /V «USER_NAME» sessionTMP.txt > sessionTMP2.txt и потом уже выгонять
      for /f «skip=1 tokens=2,» %%i in (sessionTMP2.txt) DO logoff %%i ну и
      del session.txt
      del sessionTMP.txt
      del sessionTMP2.txt
      громоздко получается, но работать должно

  5. 15 сентября 2015 в 08:08 | #7

    если нужно два и более то используем ключ /C:
    findstr /V /C:USER_NAME1 /C:USER_NAME2 session.txt > sessionTMP.txt

  6. sk132
    17 мая 2016 в 14:56 | #8

    можно сделать без использования временных файлов
    for /F «skip=1 tokens=2» %%i in (‘quser ^| findstr /V «user1 user2″‘) do logoff %%i

  7. Дмитрий
    6 апреля 2018 в 17:42 | #9

    Можете помочь, пытаюсь выполнить скрипт, но мне выдается следующая ошибка:

    C:\Users\usr1\Desktop\logoff> for /f «skip=1 tokens=2,» %%i in (sessionTMP.txt) DO logoff %%i

    строка:1 знак:4
    + for /f «skip=1 tokens=2,» %%i in (sessionTMP.txt) DO logoff %%i
    + ~
    Отсутствует открывающий знак «(» после ключевого слова «for».
    + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : MissingOpenParenthesisAfterKeyword

  8. gozhdik
    2 июля 2021 в 10:11 | #11

    @sk132
    Супер! Спасибо!

  1. Пока что нет уведомлений.


+ 9 = пятнадцать

Heads up! You are attempting to upload an invalid image. If saved, this image will not display with your comment.