none
сброс терминальных пользователей RRS feed

  • Общие обсуждения

  • помогите написать скрипт, сбросить терминальные сессии на терминальных серверах.
    Три сервера в посреднике сеансов служб терминалов, нужен скрипт который завершает сеансы всех пользователей на всех трех серверах. 
    ts1,ts2,ts3 и ферма farmts

    нашел такую строку, где пользователь сам сбрасывает свой сеанс 
    Код:
    for /f "tokens=2,3" %%i in ('qwinsta /server:ServerName') do (if %%i==%USERNAME% rwinsta /server:ServerName %%j /V)  

    а как сбросить все сессии, на всех трех серваках?

    17 декабря 2014 г. 8:13

Все ответы

  • for /f "tokens=2,3" %%i in ('qwinsta /server:ts1') do (if %%i==%USERNAME% rwinsta /server:ts1 %%j /V) 
    
    for /f "tokens=2,3" %%i in ('qwinsta /server:ts2') do (if %%i==%USERNAME% rwinsta /server:ts2 %%j /V) 
    
    for /f "tokens=2,3" %%i in ('qwinsta /server:ts3') do (if %%i==%USERNAME% rwinsta /server:ts3 %%j /V) 
    Так пробовали?


    По идее можно сбросить все сессии через брокер если его используете
    17 декабря 2014 г. 8:45
    Модератор
  • спасибо попробую, можно сбросить конечно через брокер, только просят батник сделать, в нем надо будет еще файл переименовывать чтобы пользователи сразу же заходили, это для обновления программы нужно. 

    Нужно сбрасывать всех, оставляя только консольный сеанс администратора, чтоб не завершать сеанс под которым сидит админ. 

    а что за параметр tokens 2,3 и что вместо USERNAME указывать, не совсем ясно 

    результат выполнения

    C:\Users\admin>for /f "tokens=2,3" %%i in ('qwinsta /server:termsrv1') do (if %%
    i==%USERNAME% rwinsta /server:termsrv1 %%j /V)
    Непредвиденное появление: %%i.
    C:\Users\admin>for /f "tokens=2,3" %i in ('qwinsta /server:termsrv1') do (if %%i
    ==%USERNAME% rwinsta /server:termsrv1 %%j /V)

    C:\Users\admin>(if %ПОЛЬЗОВАТЕЛЬ == admin rwinsta /server:termsrv1 %ID /V )

    C:\Users\admin>(if %0 == admin rwinsta /server:termsrv1 %Диск /V )

    C:\Users\admin>(if %edb5 == admin rwinsta /server:termsrv1 %2 /V )

    C:\Users\admin>(if %admin == admin rwinsta /server:termsrv1 %3 /V )

    C:\Users\admin>(if %65536 == admin rwinsta /server:termsrv1 %Прием /V )

    C:\Users\admin>

    сессия не завершилась.

    • Изменено agent_00711 17 декабря 2014 г. 9:02
    17 декабря 2014 г. 8:57
  • %username% - переменная окружения (имя пользователя) предполагаю что менять не нужно

    %%i переменная функции for

    если вы запускаете из батника то переменные используют %%i если из командной строки %i

    То есть

    C:\Users\admin>(if %ПОЛЬЗОВАТЕЛЬ == admin rwinsta /server:termsrv1 %ID /V )
    C:\Users\admin>(if %0 == admin rwinsta /server:termsrv1 %Диск /V )
    C:\Users\admin>(if %edb5 == admin rwinsta /server:termsrv1 %2 /V )
    C:\Users\admin>(if %admin == admin rwinsta /server:termsrv1 %3 /V )
    C:\Users\admin>(if %65536 == admin rwinsta /server:termsrv1 %Прием /V )

    заработать и не должно

    Что такое "tokens=2,3" хз но предполагаю что это можно нагуглить (возможно тип входа)

    17 декабря 2014 г. 9:18
    Модератор
  • for /f "tokens=1,2,3" %%i in ('query session') do echo "%%i" | find "console" || reset session %%k || reset session %%j 

    На другом форуме подсказали, отрабатывает на текущем сервере, завершает все сеансы, кроме админ. консоли, вроде то что нужно, но как в этом же скрипте указать выполнение этой команды на остальных серверах фермы. 

    Желательно запускать все с одного сервера, и одним скриптом

    17 декабря 2014 г. 11:52
  • Для начала найдите или напишите скрипт который будет работать хотябы где то и как то, а потом будем думать как бы что то фиксить

    http://technet.microsoft.com/en-us/library/hh849719.aspx

    рекомендую к прочтению линку и пошевский вариант запуска командной строки cmd /c

    мой прошлый коментарий вы просто оставили без коментариев
    17 декабря 2014 г. 12:35
    Модератор
  • спасибо за ответ. 

    выполняю команду 

    for /f "tokens=1,2,3" %%i in ('query session') do echo "%%i" | find "console" || reset session %%k || reset session %%j 

    через psexec на остальных серверах. 

    но при выполнении скрипта в командной строке выдает сообщение несколько раз, можно как то пропускать это подтверждение или нет?

    C:\Users\admin>C:\logoff\1.bat

    C:\Users\admin>for /F "tokens=1,2,3" %i in ('query session') do echo "%i"   | find "console"   || reset session %k   || reset session %j

    C:\Users\admin>echo "СЕАНС"   | find "console"   || reset session ID   || resetsession

    ПОЛЬЗОВАТЕЛЬ

    Сеанс ID не найден

    Сеанс ПОЛЬЗОВАТЕЛЬ не найден

    C:\Users\admin>echo "services"   | find "console"   || reset session Диск   || reset session 0

    Сеанс Диск не найден

    Если выполнить сброс сеанса, все пользователи, использующие этот протокол,будут отключены.

    Продолжить (N=нет)?



    • Изменено agent_00711 18 декабря 2014 г. 7:29
    18 декабря 2014 г. 7:27