9

Я хотел бы удостовериться, что люди вышли из системы, как только они закончили работать на одной, определенной многопользовательской машине. В настоящее время следующий пользователь просто "переключит пользователя" и продолжит работу, но, по-видимому, одновременное подключение многих пользователей с открытыми программами приводит к израсходованию ресурсов.

Можно ли автоматически выходить из системы с пользователей, если они не были активны в течение 24 часов?


Или же можно выйти из системы, кроме текущего пользователя, в полночь?

Компьютер находится в доменной сети Windows - хотя я хочу, чтобы автоматический выход из системы работал только на одной машине (и я не являюсь сетевым администратором)

,

3 ответа3

6

Чтобы выйти из системы отключенных пользователей, оставив текущего пользователя подключенным, скопируйте следующий код сценария в файл .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

Этот сценарий использует ту же команду запроса, но дополнительно проверяет часть результатов "ВРЕМЯ ОЖИДАНИЯ", регистрируя пользователя, если время простоя превышает 32 ("GTR 32"). Эта фраза встречается дважды, потому что жетон "ВРЕМЯ ПРОДОЛЖЕНИЯ" может встречаться в двух разных позициях. Затем строка, начинающаяся с "выбора", ждет 2 минуты, а затем снова выполняет операцию, возвращаясь к началу. Вы можете увеличить или уменьшить значение "32" в соответствии с вашими потребностями.

Нашел здесь.

1
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 является значением часа, а не минуты.

0

Я бы искал способ отключить функцию "Переключение пользователя". Это может помочь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .