
Я хотел бы убедиться, что пользователи выходят из системы после завершения работы на одной конкретной многопользовательской машине. В настоящее время следующий пользователь просто «переключает пользователя» и продолжает работать, но наличие многих пользователей, одновременно входящих в систему с открытыми программами, похоже, расходует ресурсы.
Можно ли автоматически выводить пользователей из системы, если они не проявляли активности в течение 24 часов?
Или можно ли в полночь вывести из системы всех, кроме текущего пользователя?
Компьютер находится в доменной сети Windows, хотя я хочу, чтобы автоматический выход из системы работал только для одной машины (и я не администратор сети)
.
решение1
Чтобы завершить сеанс работы отключенных пользователей, оставив текущего пользователя подключенным, скопируйте следующий код скрипта в файл .cmd, например «LogOffUsers.cmd», а затем запустите его как службу в полночь:
@echo off
for /f "tokens=1-7 delims=,: " %%a in ('query user ^| find /i "disc"') do logoff %%b
Скрипт работает с использованиемкоманда запросачтобы найти пользователей, которые отключились, выполните поиск по фразе «диск», а затем выйдите из системы.
Если вы хотите, чтобы скрипт работал непрерывно как служба, завершая сеансы пользователей, если они отключены или неактивны в течение определенного периода времени, вы бы использовали:
@echo off
:Top
for /f "tokens=1-7 delims=,: " %%a in ('query user ^| find /i "disc"') do if %%d GTR 32 (logoff %%b) else %%e GTR 32 (logoff %%b)
choice /T 120 /C 1 /D 1 /N
goto top
Этот скрипт использует ту же команду запроса, но дополнительно проверяет часть результатов "IDLE TIME", отключая пользователя, если время простоя больше 32 ( "GTR 32" ). Эта фраза встречается дважды, поскольку токен "IDLE TIME" может встречаться в двух немного разных позициях. Затем строка, начинающаяся с "choice", ждет 2 минуты, прежде чем снова выполнить операцию, циклически переходя к началу. Вы можете увеличить или уменьшить значение "32" в соответствии с вашими потребностями.
Найденныйздесь.
решение2
for /f "tokens=1-7 delims=,: " %%a in ('query user ^| find /i "disc"') do if %%d GTR 32 (logoff %%b) else (if %%e GTR 35 (logoff %%b))
Обратите внимание, что вышеприведенное правило будет работать только для минут бездействия. Если вы хотите использовать часы бездействия перед выходом из отключенного сеанса, вам необходимо внести в него небольшую поправку.
for /f "tokens=1-8 delims=,:/ " %%a in ('query user ^| find /i "disc"') do if %%d GTR 23 (if %%h GTR 2012 (logoff %%b))
Измените 23, чтобы настроить часы, указанное выше будет работать при 24 часах или более простоя. %%h 2012 гарантирует, что значение %%d будет часом, а не минутой.
решение3
Я бы поискал способ отключить функцию «Сменить пользователя».Этотможет помочь.