Назад | Перейти на главную страницу

Завершение работы клиентов, когда никто не вошел в систему в указанное время

В нашей компании люди перестают работать в 19:00. В 20:00 мы запускаем запланированное задание с GPO, чтобы предупредить вошедшего в систему пользователя о том, что компьютер будет выключен. Это прекрасно работает.

Когда никто не вошел в систему, а компьютер все еще работает, мы хотели бы выключить компьютер. Кто-нибудь знает, как это сделать?

Мы работаем под управлением Windows Server 2012, а нашими клиентами является Windows 7.

Выключить компьютер довольно просто - как отмечали другие, вы можете использовать shutdown команда для этого. Если вы настроили локальные брандмауэры на своих машинах, чтобы разрешить SMB и RPC от хостов управления (например, путем включения исключений удаленного администрирования в групповых политиках), вы можете запускать выключения централизованно для всех машин в вашем домене с помощью /m \\computername параметр вашего вызова выключения:

shutdown /s /f /t 30 /m \\pcXXX /c "Automatic shutdown"

Более гибкая версия команды выключения - автор: SysInternals as psshutdown. Среди прочего, он позволяет взаимодействовать с пользователем (т.е.пользователю будет предоставлена ​​возможность отменить запрос на отключение, если это необходимо).

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

C:\Users\denis>quser
 USERNAME              SESSIONNAME        ID  STATE   IDLE TIME  LOGON TIME
>denis                 console             1  Active      none   22.04.2014 15:11

Вы можете отфильтровать строку типа «Активно», чтобы определить, можете ли вы завершить работу безопасно. Пакетная версия может выглядеть так:

shutdownunused.bat

ping %1
if errorlevel 1 ( echo %1 seems offline && exit 1)
quser /SERVER:%1 | find "Active"
if %errorlevel% == 1 shutdown /s /f /t 30 /M \\%1 /c "Automatic shutdown"

вызов shutdownunused.bat pc1234 проверит и выключит pc1234, если он а) доступен для проверки связи и б) не имеет активного пользователя (он выключит хост, если пользователь вошел в систему, но отключился или его машина заблокирована). Это можно настроить по своему усмотрению - либо с помощью локальной версии в качестве запланированной задачи, либо централизованно запускаться с хоста управления путем перечисления всех станций в вашем домене. Преимущество последнего подхода в том, что будет проще вести журналы и создавать статистику.

Я использую следующую команду в пакетном файле, который затем выдается каждому выбранному компьютеру в качестве запланированной задачи моим решением для развертывания:

for /f %%i IN ('quser ^| find /c /i "active"') DO (if %%i EQU 0 shutdown /s)

У Никсфо есть команда, которую вы ищете. Тем не менее, несколько предложений: во-первых, при создании запланированной задачи убедитесь, что на вкладке «Условия» (в разделе «Создание новой задачи») вы установили, что она не будет запускаться, пока компьютер не будет бездействовать в течение xxx минут - это поможет предотвратить звонки. от пользователей, которые задерживаются допоздна, и их компьютеры «выключаются сами по себе» во время работы.

Кроме того, использование командного файла - хотя это нормально - не требуется для такого «однострочника», вы можете просто перейти на вкладку «Действие» в создании новой задачи, в разделе «Программа / сценарий» просто введите «Завершение работы» и под аргументами "/ s / f / t 30" (или любое другое число) он будет запускать всю строку

Shutdown /s /f /t 30

Я предлагаю / t 30 вместо / t 0, поскольку он даст конечному пользователю небольшое предупреждение перед принудительным завершением работы. Дайте нам знать, как это происходит!

Помимо того, что было упомянуто об обновлениях Windows, сканировании AV и времени загрузки. Вы можете использовать то же самое Запланированная задача GPO вы упоминаете о запуске командного файла на компьютере с shutdown /f /t 0.

Расположение групповой политики: Computer Configuration, expand the Preferences folder, and then expand the Control Panel Settings, Right-click the Scheduled Tasks node, point to New

.

Вы также можете использовать команду Stop-Computer CMDLet. по умолчанию, если пользователь все еще вошел в систему, он не выключит компьютер, в этом случае вам нужно будет использовать -Force