0 / 0 / 0
Регистрация: 23.08.2017
Сообщений: 30
1

Завершение сеанса пользователей на терминальном сервере (RDP)

23.08.2017, 16:20. Показов 15528. Ответов 10
Метки нет (Все метки)

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

Добавлено через 1 час 3 минуты
нашел, такой скрипт:
Прописываю пользователей через запятую в ковычках не работает, что не так?
Windows Batch file
1
2
3
4
5
6
7
8
9
10
@echo off
rem запись информации о всех сессиях RDP в файл
cd c:\backup\
quser > session.txt
rem Убираем тех пользователей которых не нужны выкидывать
findstr /V "test1"  session.txt > sessionTMP.txt
for /f "skip=1 tokens=2," %%i in (sessionTMP.txt) DO logoff %%i
rem удаляем временные файлы
del session.txt
del sessionTMP.txt
Добавлено через 8 минут
если пользователь test1 то с одним работает

Добавлено через 13 минут
что делаю не так, как сюда прописать правильно нескольких пользователей которые будут исключаться?

Добавлено через 2 минуты
Windows Batch file
1
findstr /V "test1" session.txt > sessionTMP.txt
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.08.2017, 16:20
Ответы с готовыми решениями:

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

Выход, завершение сеанса пользователей терминала. Аудит
Имеется задача - мониторить Вход в сеанс,отключение и завершение сеанса, пользователей терминала....

Возможно ли отключить запрос разрешения пользователя подключиться к его RDP-сессии на терминальном сервере?
Здравствуйте коллеги! Долго искал на просторах Интернета, но так и не нашел. Вопрос такой:...

Для группы пользователей закрыть доступ ко всем файлам , кроме их документов на терминальном сервере
Имеется терминальный сервер,требуется для группы пользователей закрыть доступ ко всем файлам ,...

10
4303 / 2096 / 656
Регистрация: 26.04.2015
Сообщений: 6,790
23.08.2017, 17:37 2
Вот например код, который отключит всех пользователей кроме себя, на его примере соорудите себе нужное
Windows Batch file
1
2
3
@echo off
for /f "skip=1 tokens=1-3" %%a in ('query user^|find /v ">"') do set/a id=%%c& cmd/v/c "if /i "%%a" neq "%Username%" (if !id!==0 (logoff %%b) else (logoff %%c))"
pause
0
0 / 0 / 0
Регистрация: 23.08.2017
Сообщений: 30
23.08.2017, 17:38  [ТС] 3
А можно по нему немного объяснить?
0
4303 / 2096 / 656
Регистрация: 26.04.2015
Сообщений: 6,790
23.08.2017, 17:39 4
для нескольких примерно так:
Windows Batch file
1
... ('query user^|findstr /v /c:"user1" /c:"user2"') ...
0
0 / 0 / 0
Регистрация: 23.08.2017
Сообщений: 30
23.08.2017, 17:43  [ТС] 5
у меня мой пример то же самое делал.

Добавлено через 43 секунды
по вот этим строчка не понятно "skip=1 tokens=1-3"

Добавлено через 22 секунды
пропустит 1 строку, а что делаю токен?

Добавлено через 1 минуту
а почему пользователи указываются через c:"user1"?
0
4303 / 2096 / 656
Регистрация: 26.04.2015
Сообщений: 6,790
23.08.2017, 17:56 6
Цитата Сообщение от tera2017 Посмотреть сообщение
объяснить
например введите просто
Windows Batch file
1
query user|findstr /v /c:"user1" /c:"user2"
посмотрите на вывод

в коде [skip=1 tokens=1-3] пропуск первой строки (заголовка) и деление строки по пробелу, при этом забираем 3 токена
опять же для примера, запустите просто
Windows Batch file
1
2
for /f "skip=1 tokens=1-3" %%a in ('query user^|findstr /v /c:"user1" /c:"user2"') do echo %%a %%b %%c
pause
Добавлено через 2 минуты
Цитата Сообщение от tera2017 Посмотреть сообщение
а почему пользователи указываются через c:"user1"?
наоборот
findstr /v /c:"user1" /c:"user2"
/v - кроме и при этом:
/c:"Какой-то юзер" - без этого
/c:"Еще какой-то юзер" - и без этого

Добавлено через 9 минут
в вашем случае вообще одного токена достаточно (но имя юзера не должно содержать пробелов)
Windows Batch file
1
2
3
@echo off
for /f "skip=1" %%a in ('query user^|findstr /v /c:"искл_user1" /c:"искл_user2"') do echo %%a
pause
0
0 / 0 / 0
Регистрация: 23.08.2017
Сообщений: 30
23.08.2017, 18:17  [ТС] 7
Windows Batch file
1
2
3
################################
for /f "skip=1" %%a in ('query user^|findstr /v /c:"искл_user1" /c:"искл_user2"') do set/a id=%%c& cmd/v/c "if /i "%%a" neq "%Username%" (if !id!==0 (logoff %%b) else (logoff %%c))"
################################
а как теперь логоф отработать по списку? пытаюсь сделать так, не получаеться
0
4303 / 2096 / 656
Регистрация: 26.04.2015
Сообщений: 6,790
23.08.2017, 18:31 8
Windows Batch file
1
2
for /f "skip=1" %%a in ('query user^|findstr /v /c:"искл_user1" /c:"искл_user2"') do logoff %%a
pause
0
0 / 0 / 0
Регистрация: 23.08.2017
Сообщений: 30
23.08.2017, 18:51  [ТС] 9
for /f "skip=1 tokens=1-3" %%a in ('query user^|findstr /v /c:"test1" /c:"test2"') do set/a id=%%c& cmd/v/c "if /i "%%a" neq "%Username%" (if !id!==0 (logoff %%b) else (logoff %%c))"
так получилось.
Изменилось немного условие, как сделать чтобы все сессии пользователей со списка исключений, а так же пользователи со статусом "Актив" не выкидывались с сервера, остальные выкидывались, т.е. статус "Дисконект".

Добавлено через 17 минут
Пытаюсь сделать таким макаром, что без результатно:
Windows Batch file
1
for /f "skip=1 tokens=1-3" %%a in ('query user^|findstr /v /c:"test" /c:"oykalas3" "Active"') do set/a id=%%c& cmd/v/c "if /i "%%a" neq "%Username%" (if !id!==0 (logoff %%b) else (logoff %%c))"
0
4303 / 2096 / 656
Регистрация: 26.04.2015
Сообщений: 6,790
24.08.2017, 00:14 10
tera2017,
прокрутите вниз на окно "Похожие темы", там есть несколько вариантов где разбирали похожее.
0
0 / 0 / 0
Регистрация: 23.08.2017
Сообщений: 30
24.08.2017, 10:54  [ТС] 11
Посмотрел скрипты, они у меня не срабатывают как надо.
ваш скрипт отрабатывает, но выкидывает еще "Активных пользователей", помимо пользователей в исключении, как исключить активных пользователей?
Windows Batch file
1
for /f "skip=1 tokens=1-3" %%a in ('query user^|findstr /v /c:"test" /c:"oykalas3" "Active"') do set/a id=%%c& cmd/v/c "if /i "%%a" neq "%Username%" (if !id!==0 (logoff %%b) else (logoff %%c))"
Добавлено через 40 минут
Разобрался, сделал так:
Windows Batch file
1
for /f "skip=1 tokens=1-3" %%a in ('query user^|findstr /V /C:"Act" /C:"пользователь1" ') do set/a id=%%c& cmd/v/c "if /i "%%a" neq "%Username%" (if !id!==0 (logoff %%b) else (logoff %%c))"
Добавлено через 23 минуты
Подскажите хочу научиться писать скрипты, что почитать?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.08.2017, 10:54

Обрыв сеанса RDP
Добрый день. Помогите решить одну назойливую проблему. Каждый день у некоторых пользователей (не у...

Завершение сеанса средствами C#
Здравствуйте! Возник такой вопрос, как можно из программы завершить сеанс текушего пользователя....

Завершение сеанса сбой
Привет. Почему-то происходит завершение сеанса при переходе по одной ссылке...

Завершение сеанса на этапе регистрации
Проблема: после загрузки windows xp proff , нажимаю пользователя, начинается и сразу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru