В нашей компании люди перестают работать в 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