1 / 1 / 0
Регистрация: 02.02.2013
Сообщений: 38
|
|
1 | |
Выполнить LOGOFF для всех пользователей, кроме себя03.02.2013, 00:05. Показов 49904. Ответов 42
Метки нет (Все метки)
Всем привет! Решил попросить помощи экспертов, так как не могу находить ответ на мой вопрос нигде...
Задача такова: Выполнить "Выход из Системы" другим учетным записям а свою учетку не трогать. Вот например на данном скриншоте: Как вы видите здесь 2 аналогические учетки под именем "test1". Одна активная ( моя ), другая неактивная. Возможно ли программно выполнить Log Off всех аналогических учетках кроме своей активной? Помогите пожалуйста разобраться
0
|
03.02.2013, 00:05 | |
Ответы с готовыми решениями:
42
Disconnect / Logoff отключенных ЛОКАЛЬНЫХ пользователей из ПК Число совершенно,если она равна сумме всех своих делителей кроме самого себя Как вывести всех пользователей, привязанных к роли, кроме текущего (того, кто тоже в этой роли)? Logoff пользователей на "терминалке" с исключением по текстовому файлу |
1 / 1 / 0
Регистрация: 02.02.2013
Сообщений: 38
|
|
23.02.2013, 02:08 [ТС] | 22 |
Активен / Отключен , нет?
0
|
23.02.2013, 02:59 | 23 | |||||
Slackerok, Вам лучше знать.
Значит делаю для всех ID, у которых нет надписи "Активно".
3
|
1 / 1 / 0
Регистрация: 02.02.2013
Сообщений: 38
|
|
23.02.2013, 21:32 [ТС] | 24 |
Спасибо огромное!!!! Скрипт работает как часики!!!
0
|
0 / 0 / 0
Регистрация: 23.05.2014
Сообщений: 11
|
||||||
11.02.2015, 23:46 | 25 | |||||
Подскажите, пытаюсь модифицировать Ваш скрипт под свои потребности. Цель - отключать всех неадминистративных неактивных пользователей у которых не запущен 1С. Если исключить logoff из кода, то выводит правильных пользователей. Но если оставить эту команду - уходит в рекурсию и бесконечно выводит только первого пользователя удовлетворяющего условиям... Как исправить?
0
|
0 / 0 / 0
Регистрация: 23.05.2014
Сообщений: 11
|
|
12.02.2015, 08:04 | 27 |
Код
SESSIONNAME USERNAME ID STATE TYPE DEVICE services 0 Disc >rdp-tcp#0 Administrator 2 Active rdpwd manager1 3 Disc manager2 4 Disc manager3 7 Disc console manager4 9 Active rdp-tcp 65536 Listen
0
|
0 / 0 / 0
Регистрация: 23.05.2014
Сообщений: 11
|
|
13.02.2015, 09:31 | 28 |
Еще раз озвучиваю проблему:
Если в изначальном коде удалить строку logoff !ID!, то выводится конечное число действий, которое соответствует действительности, а именно указанным выше условиям: Код
not admin not admin disc user=manager1 ID=3 Status=Disc was log off. not admin not admin disc user=manager2 ID=5 Status=Disc was log off. not admin disc 1cv7.exe 5892 7 21*636 K not admin Press any key to continue . . . Код
not admin not admin disc user=manager1 ID=3 Status=Disc was log off. not admin not admin disc user=manager1 ID=3 Status=Disc was log off. not admin not admin disc user=manager1 ID=3 Status=Disc was log off. ........ и т.д.
0
|
13.02.2015, 12:01 | 29 | |||||
Очевидно, что проблема с logoff.
Если написать вариации:
Сотрите @echo off и выполните из консоли: этотбат.cmd > 1.log Что будет видно по логу?
0
|
0 / 0 / 0
Регистрация: 23.05.2014
Сообщений: 11
|
|
14.02.2015, 16:08 | 30 |
По логу видно что logoff !ID! не выполняет свою функцию. Опять переходит в начало цикла и пытается отключить уже проверенного пользователя. И так до бесконечности...
Пауза после операции logoff не выполняется. Если ID = 5, то echo logoff !ID! выводит logoff 5 echo logoff "!ID!" выводит logoff "5" Причем если пользователь с кодом 5 есть, то команда logoff 5 работает корректно...
0
|
0 / 0 / 0
Регистрация: 26.02.2015
Сообщений: 1
|
|
26.02.2015, 17:33 | 31 |
Помогите в следующей проблеме.
Мне нужно делать логофф определенным пользователям на терминальном сервере. Пример: Есть сервер с ОС Windows 2003 Есть учетки: admin, ivanov, petrov и sidorov. К примеру нужно ежедневно в 12-00 делать логофф только для учеток ivanov и sidorov. Расписание я сам настрою через планировщик. Помогите, как написать bat-ник, который будет завершать сеанс только определенным учеткам. P.S. По той причине что logoff понимает только имя сеанса или id сеанса, а не понимает имя залогиненой учетки, у меня и возникла проблема. Заранее спасибо!
0
|
8 / 5 / 3
Регистрация: 13.02.2013
Сообщений: 294
|
|
22.07.2015, 11:38 | 32 |
Dragokas, честно говоря, мало понял ваш скрипт, только моментами. Не могли бы Вы к каждой строчке приложить комментарий. Скидывать код в .bat? Если не сложно пошагово напишите(для ламеров) что и за чем делать. Буду очень благодарен!
0
|
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 2
|
|
23.07.2015, 14:36 | 34 |
Классный скрипт!
А можно сделать так, чтобы пассивные сессии закрывались не в момент выполнения скрипта, а по прошествии определённого времени (например, двух часов)? То есть, перейдя из статуса Active в Disconnected, начинался бы отсчёт времени, а по пришествии двух часов (если конечно пользователь не вернулся в систему) его сессия автоматически отключается… Добавлено через 15 минут В дополнение: На одном сайте я нашёл такую утилиту idlelogoff, но к сожалению у неё есть один серьёзный недостаток – она закрывает не только сессии со статусом Disconnected (по прошествии заданного времени) но и активную сессию, если в ней не было сделано за это время какое-либо действие.
0
|
0 / 0 / 0
Регистрация: 23.07.2015
Сообщений: 2
|
|
28.07.2015, 07:53 | 35 |
Dragokas,
Если можно, помогите, пожалуйста. Вы можете изменить скрипт так, чтобы он закрывал недействующие сессии через определённое время?
0
|
1 / 1 / 0
Регистрация: 26.02.2016
Сообщений: 2
|
|||||||||||
24.03.2016, 16:49 | 36 | ||||||||||
Всем привет, автору респект.)
Отвечаю на крайний поставленный вопрос, тем более, что у меня так же возникла подобная необходимость. Задача у меня была схожая. 1. Выявить не активных пользователей на терминальном сервере 2. Если через пол часа пользовательская сессия продолжает быть не активной - logoff Для данных целей были созданы 2 скрипта на основе скрипта автора. 1-й выявляет не активных пользователей и записывает их во временный файл + создает задачу в шедуллере с запуском 2-го скрипта со временем исполнения через 30 минут от текущего. 2-й скрипт открывает временный файл со списком пользователей к разлогиниванию (если онный существует) и проверяет их по списку - если пользователь продолжает быть не активным - logoff. Первый скрипт загнал так же в шедулер с выполнением каждые 5 минут. В первом скрипте необходимо поменять переменные admin и pass на свои. 1-й скрипт userlogoff.bat
1
|
1 / 1 / 0
Регистрация: 26.02.2016
Сообщений: 2
|
|
26.03.2016, 09:31 | 37 |
Что то я накосячил со своими скриптами. Они конечно работают, но логика не правильная.
Получается что если пользователь не активен и 1-й скрипт его пометил как "не активного" и после этого в течении полу часа, скажем через 20 минут он заходил снова на терминалку и вышел, то 2-й скрипт все равно его терминирует. Наверно нужно, чтобы в случае, если пользователь снова заходил на терминал в течении определенного времени, то он бы удалялся из списка на logoff и/или время разлогинивания добавлялось относительно последнего входа. Думаю надо сделать так. 1. Скрипт формирует временный файл с не активными пользователями следующего формата: "имя пользователя" "ID" "время logoff" (где время logoff - текущее+время через которое он должен быть разлогинен. В моем случае - 30 минут). 2. Второй скрипт, или тот же, проверяет временный файл (если он существует) и проверяет: - если пользователь активен в текущей сессии, но он присутствует в файле на logoff - удаляет его из файла. 3. Второй скрипт, или то же, открывает файл со списком пользователей на logoff и - если время на logoff (третья колонка в файле) совпадает с текущим - logoff пользователя. Данный скрипт должен запускаться через шедуллер каждую минуту. Как то так. Есть мысли у кого?
0
|
0 / 0 / 1
Регистрация: 26.03.2016
Сообщений: 3
|
||||||
26.03.2016, 13:39 | 38 | |||||
вот так работает (win2012 eng)
Так-же по хорошему в query user текущий пользователь помечается символом ">" перед именем (например для того, если несколько юзеров Administrator залогинено), но я так-же неасилил его ">" вырезать и сравнивать, т.к. он типа спец символ и его батник не хочет как именно символ, а я незнаю.
0
|
4334 / 2124 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
|
||||||
26.03.2016, 14:26 | 39 | |||||
Ramka2, так хотелось?
1
|
0 / 0 / 1
Регистрация: 26.03.2016
Сообщений: 3
|
|||||||||||
26.03.2016, 15:41 | 40 | ||||||||||
Да, так и вправду лучше :-)
Ключ /I, если он указан, задает сравнение текстовых строк без учета регистра. А совсем в идеале хотелось брать из вывода комманды Код
C:\Scripts>query user ПОЛЬЗОВАТЕЛЬ СЕАНС ID СТАТУС БЕЗДЕЙСТВ. ВРЕМЯ ВХОДА >administrator rdp-tcp#151 2 Активно . 26.03.2016 14:29 koroleva rdp-tcp#1 3 Активно . 26.03.2016 14:43 Добавлено через 59 минут Если пользователь не активен, а отключен, то у него нет ничего в колонке СЕАНС. В результате колонки "сдвигаются". Вот тут у koroleva ID указан во второй колнке, а у administrator ID в третьей (т.к. мы берем по разделителю пробел). Код
ПОЛЬЗОВАТЕЛЬ СЕАНС ID СТАТУС БЕЗДЕЙСТВ. ВРЕМЯ ВХОДА >administrator rdp-tcp#7 2 Активно . 26.03.2016 14:29 koroleva 3 Диск . 26.03.2016 15:16 Т.е. получается, что он логофит либо по имени сеанса (если юзер активен), либо по ID (если юзер отключен).
И при этом я сравниваю первую колонку с ">%Username%", т.е. по идее, если залогинен Admin и еще раз Admin, то оставит только текущего, т.к. текущий в выводе комманды будет ">Admin", а другого Admin успешно разлогофит. Если хочется оставить все экземпляры "себя", то тогда как выше писал ALPAP (знак ">" считаем разделителем)
0
|
26.03.2016, 15:41 | |
26.03.2016, 15:41 | |
Помогаю со студенческими работами здесь
40
Для группы пользователей закрыть доступ ко всем файлам , кроме их документов на терминальном сервере Сделать для всех текстов 12рх, кроме h1.h6 Написать функцию, которая вычисляет количество всех атомов в списке(кроме NIL) с учетом всех подсписков всех уровней вложенности Софт для очистки мусора (Temp,Cache) для всех пользователей Отключить сеть для одного из пользователей windows (не для всех) Событие для всех div class, кроме одного Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |